ios - viewWillAppear不运行。
怪我咯
怪我咯 2017-04-17 13:55:32
0
3
729

请问下,我现在有一个UIScrollView,还有一个ViewControll的数组,然后我把这个数组遍历用addChildViewController添加到了UIScrollView,然后设置UIScrollView的contentSize是用ViewControll数组*屏幕宽度,达到滑动切换ViewControll。但是viewWillAppear不运行。求解释

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回覆(3)
Ty80

你這麼做相當於把所有View一次性都加載到了UIScrollView上,只不過有些是在屏幕上,有些是超出了屏幕,它們是一直顯示的,只是你看不到,壓根就沒有Appear這個動作,所以不會走ViewWillAppear

阿神

樓上的答案應該是對的,我只是來補充的。


對於這個的處理,你可以使用UIScrollView本身的代理方法,當拖曳完成後的方法- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:
來判斷當前的切換,然後將你再ViewWillAppear的方法放在裡面執行就OK了。

伊谢尔伦

答應是必須會呼叫~
這裡說下呼叫時機(對於ChildController來說,畢竟是一個完整的是UIViewController週期其中一個步驟):
viewWillAppear, viewDIdAppear在執行

[self.view addSubview:childController.view];

後呼叫。

反之,viewWillDisappear, viewDidDisappear在執行

[childController.view removeFromSuperview];

後呼叫。

如果不信可以自己寫一個簡單的Demo,增加一個如下的操作:

    cv *c = [cv new];
    [self addChildViewController:c];
    [self.view addSubview:c.view];
    [c didMoveToParentViewController:self];
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        [c.view removeFromSuperview];
    });

在cv 重寫viewWillAppear: viewWilDisappear:打上LOG進行驗證。

樓主自己實際狀況請參考上面分析~

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板