官术网_书友最值得收藏!

  • iPhone UIKit詳解
  • 王志剛 王中元 朱蕾編著
  • 779字
  • 2019-01-01 07:04:28

3.7 UIViewController與相關類間關系概要

3.7.1 UIViewController與UIView/UIWindow的關系

UIViewController中以view屬性的形式擁有UIView,此UIView作為UIWindow的subviews追加進來顯示在畫面中。為反映這種聯系,以讓各元素間的關系(通過屬性)更清楚地呈現在大家面前,特繪制了如圖3-33所示的對象關系圖。

圖3-33 UIViewController類與UIView/UIWindow間的關系

圖中所有用線關聯起來的對象之間均有屬性關系。其中用帶四方形箭頭的線連接的兩個對象之間,四方形箭頭指向的一方擁有另一方。例如UIViewController與中間的UIView之間,UIViewController以view屬性的形式擁有UIView對象,屬性名稱顯示在靠近UIView一邊。此圖中反映的關系特征如下。

  • UIViewController擁有一個UIView(view屬性)。
  • UIViewController的view中可以追加任意數目的UIView以創建畫面。
  • UIView中可以包含多個UIView(subviews)。
  • UIView可通過superview屬性參照父UIView。
  • 如果是UIWindow的子元素(subviews),則可通過Window屬性參照UIWindow。

3.7.2 UITabBarController與各畫面的關系

接著我們將UITabBarController與各畫面的關系歸納為如圖3-34所示。

圖3-34 UITabBarController與各畫面的關系

此圖反映的關系特征如下。

● UITabBarController通過viewControllers屬性管理多個UIViewController。

● viewControllers的UIViewController中,可通過selectedViewController屬性參照當前畫面的UIViewController。

● 對于viewControllers中的UIViewController來說,可通過tabBarController屬性參照UITabBarController。

● 對于viewControllers中的UIViewController來說,也可通過parentViewController屬性參照UITabBarController。

3.7.3 UINavigationController與各畫面的關系

這里將UINavigationController與各畫面的關系歸納為如圖3-35所示。

圖3-35 UINavigationController與各畫面的關系

此圖反映的關系特征如下。

● UINavigationController的viewControllers屬性中保存了跳轉路徑中所有畫面的UIViewController。

● 跳轉路徑中所有畫面的UIViewController中,可通過topViewController取得當前畫面的UIViewController。

● 對于跳轉路徑中所有畫面的UIViewController來說,可以通過其navigationController屬性參照UINavigationController。

● 跳轉路徑中已經退出的畫面與UINavigationController沒有任何關系。

● 跳轉路徑中各畫面的parentViewController屬性參照的不是上一畫面而是UINavigationController。

3.7.4 UIViewController與模態畫面的關系

這里將UIViewController與模態畫面的關系歸納為如圖3-36所示。

圖3-36 UIViewController與模態畫面間的關系

此圖反映的關系特征如下。模態畫面可通過當前畫面UIViewController的modalViewController屬性進行參照。

● 就算模態畫面被顯示,UINavigationController的topViewController也不是指向模態畫面,而是仍然指向彈出模態畫面的原畫面的UIViewController。

● 對于UINavigationController的visibleViewController屬性來說,如果模態畫面被顯示,則指向模態畫面。

● 模態畫面的parentViewController并非指向模態畫面的母畫面,而是指向UINavigationController。

主站蜘蛛池模板: 京山县| 门源| 永宁县| 洪雅县| 德兴市| 太仆寺旗| 新干县| 宁阳县| 郓城县| 永吉县| 安庆市| 兴山县| 河曲县| 济源市| 扎兰屯市| 固镇县| 康平县| 武定县| 龙口市| 青神县| 荔波县| 潍坊市| 高安市| 磐石市| 东阿县| 富顺县| 鸡西市| 赤城县| 许昌县| 育儿| 自治县| 章丘市| 通化市| 东乡县| 望城县| 南部县| 福建省| 松江区| 桃江县| 余庆县| 太湖县|