iOS ----- viewController 控制器

來源:互聯網
上載者:User

標籤:

一、[父視圖控制器 addChildViewController:子視圖控制器];

在此,圖控制器A添加了另一個圖控制器B,那麼A充當父視圖控制器,B充當子視圖控制器。父視圖控制器充當了視圖控制器容器的角色。

1、addChildViewController方法:
- (void)addChildViewController:(UIViewController *)childController
向視圖控制器容器中添加子視圖控制器

childController:子視圖控制器

當要添加的子視圖控制器已經包含在視圖控制器容器中,那麼,相當於先從父視圖控制器中刪除,然後重新添加到父視圖控制器中。

2、removeFromParentViewController 方法
- (void)removeFromParentViewController
從父視圖控制器中刪除。

3、transitionFromViewController 方法
- (void)transitionFromViewController:(UIViewController
*)fromViewController toViewController:(UIViewController
*)toViewController duration:(NSTimeInterval)duration
options:(UIViewAnimationOptions)options animations:(void
(^)(void))animations completion:(void (^)(BOOL finished))completion
交換兩個子視圖控制器的位置(由於添加的順序不同,所以子試圖控制器在父視圖控制器中存在層次關係)

fromViewController:當前顯示的子試圖控制器,將被替換為非顯示狀態

toViewController:將要顯示的子視圖控制器

duration:交換動畫持續的時間,單位秒

options:動畫的方式

animations:動畫Block

completion:完成後執行的Block

4、willMoveToParentViewController 方法
- (void)willMoveToParentViewController:(UIViewController *)parent
當一個視圖控制器從視圖控制器容器中被添加或者被刪除之前,該方法被調用parent:父視圖控制器,如果沒有父視圖控制器,將為nil

注意點:

-
當我們向我們的視圖控制器容器中調用removeFromParentViewController方法時,必須要先調用該方法,且parent參數為nil:

[將要刪除的視圖控制器 willMoveToParentViewController:nil];

- 當我們調用addChildViewController方法時,在添加子視圖控制器之前將自動調用該方法。所以,就不需要我們顯示調用了。

5、didMoveToParentViewController 方法
- (void)didMoveToParentViewController:(UIViewController *)parent
當從一個視圖控制容器中添加或者移除viewController後,該方法被調用。

parent:父視圖控制器,如果沒有父視圖控制器,將為nil

當我們向我們的視圖控制器容器(就是父視圖控制器,它調用addChildViewController方法加入子視圖控制器,它就成為了視圖控制器的容器)中添加(或者刪除)子視圖控制器後,必須調用該方法,告訴iOS,已經完成添加(或刪除)子控制器的操作。

removeFromParentViewController 方法會自動調用了該方法,所以,刪除子控制器後,不需要在顯示的調用該方法了。

其實,這幾個方法中的API說明,看的還懂。

二、關於willMoveToParentViewController方法和didMoveToParentViewController方法的使用

1.這兩個方法用在子試圖控制器交換的時候調用!即調用transitionFromViewController 方法時,調用。

2.當調用willMoveToParentViewController方法或didMoveToParentViewController方法時,要注意他們的參數使用:

當某個子視圖控制器將從父視圖控制器中刪除時,parent參數為nil。

即:[將被刪除的子試圖控制器 willMoveToParentViewController:nil];

當某個子試圖控制器將加入到父視圖控制器時,parent參數為父視圖控制器。

即:[將被加入的子視圖控制器 didMoveToParentViewController:父視圖控制器];

3.無需調用[子視圖控制器 willMoveToParentViewController:父視圖控制器]方法。因為我們調用[父視圖控制器
addChildViewController:子視圖控制器]時,已經預設調用了。

只需要在transitionFromViewController方法後,調用[子視圖控制器didMoveToParentViewController:父視圖控制器];

4.無需調用[子視圖控制器 didMoveToParentViewController:父視圖控制器]方法。因為我們調用

[子視圖控制器 removeFromParentViewController]時,已經預設調用了。

只需要在transitionFromViewController方法之前調用:[子視圖控制器
willMoveToParentViewController:nil]。

iOS ----- viewController 控制器

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.