2013-08-02 71 views
0

用下面的代碼:的iOS presentViewController視圖控制器不完全加載

MyModalViewController *mMVC = [[MyModalViewController alloc] init]; 
UINavigationController *mMNavVC = [[UINavigationController alloc] initWithRootViewController:mMNavVC]; 
mMNavVC.navigationBar.barStyle = UIBarStyleBlackOpaque; 
[[[appdelegate window] rootViewController] presentViewController:mMNavVC animated:YES completion:nil]; 
[mMVC release]; 
[mMNavVC release]; 
//(Yes we are not using ARC yet - kills me) 

視圖禮物,但它不能完全滑動到頂部之前加載。導航控制器確實加載正常,並且您看到它一直向上滑動。但它只是一個框架。換句話說,當導航控制器滑入到位時,您可以看到呈現視圖控制器 - 然後是mMVC負載。

感謝您的幫助!

回答

3

您的問題是,您正在嘗試創建一個UINavigationController而使用它作爲UINavigationController rootviewcontroller。固定這一行:

UINavigationController *mMNavVC = [[UINavigationController alloc] 
initWithRootViewController:mMNavVC]; 

這樣:

MyModalViewController *mMVC = [[MyModalViewController alloc] init]; 
UINavigationController *mMNavVC = [[UINavigationController alloc] initWithRootViewController:mMVC]; 

將表示前加載模態視圖控制器。

1
MyModalViewController *mMVC = [[MyModalViewController alloc] init]; 
UINavigationController *mMNavVC = [[UINavigationController alloc] initWithRootViewController:mMNavVC]; 
mMNavVC.navigationBar.barStyle = UIBarStyleBlackOpaque; 
[[[app window] rootViewController].navigationController pushViewController: mMNavVC animated:YES]; 
[mMVC release]; 
[mMNavVC release]; 
+0

我不認爲他想改變他的窗口的rootViewController。 – johnyu

+0

@ johnyu-OP有導航控制器如此presentView對他來說不正確 – iPatel

+0

但他有一個導航控制器,他試圖以模態呈現。在根視圖控制器上沒有任何關於導航控制器的信息。另外,如果啓動時有一個導航控制器,它不應該是rootViewController嗎? – johnyu

1

嘗試增加,您訪問VC的看法線,即

MyModalViewController *mMVC = [[MyModalViewController alloc] init]; 
UINavigationController *mMNavVC = [[UINavigationController alloc] initWithRootViewController:mMNavVC]; 
mMNavVC.navigationBar.barStyle = UIBarStyleBlackOpaque; 
mMVC.view.backgroundColor = [UIColor whiteColor]; 
[[[appdelegate window] rootViewController] presentViewController:mMNavVC animated:YES completion:nil]; 
[mMVC release]; 
[mMNavVC release]; 

這是一種對問題的解決方法,你的viewController的觀點沒有得到navigationController的viewDidAppear方法被調用之前加載的。如果我發佈的內容不起作用,則問題在其他地方。 只需嘗試一下,告訴它現在是否可以。 :)

0

好的。每個人都會得到答案,因爲他們都對我有幫助。

LucOlivierDB獲得複選標記,因爲那對我來說只是一個愚蠢的事情,沒有看到。

!!注意!事實證明我的真正的問題,因爲這行代碼:

self.view.backgroundColor = [UIColor clearColor]; 

有人認爲這將是聰明,有各方面的意見繼承通過使視圖透明的背景。所以當它提出這個觀點時,它就是透明的。由於在完成模態操作之前並沒有考慮完成繪圖,所以在此之前您可以看到它下方的視圖。 謝謝你們。你打電話讓我思考和學習!

相關問題