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

3.7 UIViewController與相關(guān)類間關(guān)系概要

3.7.1 UIViewController與UIView/UIWindow的關(guān)系

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

圖3-33 UIViewController類與UIView/UIWindow間的關(guān)系

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

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

3.7.2 UITabBarController與各畫面的關(guān)系

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

圖3-34 UITabBarController與各畫面的關(guān)系

此圖反映的關(guān)系特征如下。

● UITabBarController通過viewControllers屬性管理多個(gè)UIViewController。

● viewControllers的UIViewController中,可通過selectedViewController屬性參照當(dāng)前畫面的UIViewController。

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

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

3.7.3 UINavigationController與各畫面的關(guān)系

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

圖3-35 UINavigationController與各畫面的關(guān)系

此圖反映的關(guān)系特征如下。

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

● 跳轉(zhuǎn)路徑中所有畫面的UIViewController中,可通過topViewController取得當(dāng)前畫面的UIViewController。

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

● 跳轉(zhuǎn)路徑中已經(jīng)退出的畫面與UINavigationController沒有任何關(guān)系。

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

3.7.4 UIViewController與模態(tài)畫面的關(guān)系

這里將UIViewController與模態(tài)畫面的關(guān)系歸納為如圖3-36所示。

圖3-36 UIViewController與模態(tài)畫面間的關(guān)系

此圖反映的關(guān)系特征如下。模態(tài)畫面可通過當(dāng)前畫面UIViewController的modalViewController屬性進(jìn)行參照。

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

● 對(duì)于UINavigationController的visibleViewController屬性來說,如果模態(tài)畫面被顯示,則指向模態(tài)畫面。

● 模態(tài)畫面的parentViewController并非指向模態(tài)畫面的母畫面,而是指向UINavigationController。

主站蜘蛛池模板: 伊宁市| 独山县| 舞钢市| 开封县| 深泽县| 图们市| 体育| 肥西县| 禄丰县| 油尖旺区| 通榆县| 两当县| 会宁县| 米林县| 行唐县| 三江| 林西县| 曲阜市| 赫章县| 易门县| 虞城县| 九江县| 鄄城县| 郎溪县| 石城县| 金门县| 桦南县| 曲周县| 韩城市| 鹤峰县| 靖宇县| 青铜峡市| 盐亭县| 中牟县| 辛集市| 福州市| 芒康县| 塔河县| 甘洛县| 荔浦县| 惠水县|