所以我有一個屏幕可以檢查某些屬性,並且在定義的情況下會立即在viewDidLoad
中模態地加載另一個視圖,而不使用動畫在當前加載的視圖上不要顯示下面的視圖)。在iOS8之前完成這個操作之後,原始視圖會暫停其加載(不會繼續執行viewWillAppear
,viewDidLayoutSubviews
等),直到覆蓋控制器被解除爲止。我發現這種行爲適合我的需求,因爲原始視圖中元素的任何動畫都可以完成。但是,在iOS 8中,我得到了完全不同的事件鏈。首先,由於某種原因,viewDidLayoutSubviews
被調用兩次(什麼與怎麼了?),但更重要的觀點是不喜歡另一個控制器被彈出所有隨時隨地viewDidAppear
之前,抱怨unbalanced calls to begin/end appearance transitions
。不僅如此,但底層viewController
繼續與它的加載(viewWillAppear
,viewDidLayoutSubviews
等),即使它沒有被顯示這會導致這些事件的所有方法火。我很感激蘋果是否已經更新了這種方式的意圖是要實現的,所以如果新元是一個完全不同的過程,我願意採用,但是,因爲它是我無法得到適當的工作。iOS 8 viewDidLoad模態演示文稿導致多個演示文稿
我會很感激如何得到這個模式的看法,而不會導致基礎視圖繼續它的加載插話任何幫助。
謝謝,
邁克
更新:將帶來一些代碼下面是主viewController
呈現模態VC,如果需要的viewDidLoad
。
-(void) viewDidLoad{
if(hasNotSeenTutorial){
TutVC* vc = [[TutVC alloc] initWithNibName:@"tutNib" bundle:nil]
vc.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self.navigationController presentViewController:vc animated:NO completion:^{
NSLog(@"Has Completed Presentation");
}];
}
}
這是問題所在。在viewDidLoad
這裏調用演示文稿,導致演示VC繼續。在iOS 8之前,如果VC尚未呈現,則會暫停,直到模態VC被解散爲止,然後將像往常一樣完成。根據我原來的文章,iOS 8並非如此。
你可以添加一些代碼來使這個故事更易於理解嗎? – Sjors 2014-09-20 12:25:34
@Sjors新增了一些代碼,但我擔心我的解釋讓它變得更加複雜! – Mackey18 2014-09-20 14:06:46
您是否嘗試將此塊從'viewDidLoad'移動到'viewWillAppear'? – sha 2014-09-20 14:50:10