在iOS 5上,當我嘗試使用presentModalViewController
從另一個視圖控制器呈現任何視圖控制器時,模態視圖顯示在當前視圖的後面。UIViewController以模態形式顯示在當前視圖後面
由於它工作正常,在iOS 4和知道presentModalViewController
已經在iOS 5中被否決,我嘗試使用presentViewController
沒有運氣。
這是我第一次遇到這個問題,關於什麼可能導致這種奇怪的行爲的任何想法?
在iOS 5上,當我嘗試使用presentModalViewController
從另一個視圖控制器呈現任何視圖控制器時,模態視圖顯示在當前視圖的後面。UIViewController以模態形式顯示在當前視圖後面
由於它工作正常,在iOS 4和知道presentModalViewController
已經在iOS 5中被否決,我嘗試使用presentViewController
沒有運氣。
這是我第一次遇到這個問題,關於什麼可能導致這種奇怪的行爲的任何想法?
我終於找到了問題。出於某些尷尬的原因,根窗口的rootViewController
未正確設置,導致模態視圖出現奇怪的行爲。
更令人費解的是,它在iOS 4上運行良好,並且在iOS 5上失敗了。我相信我仍然錯過了導致這種問題的真正原因,但正確設置rootViewController
在AppDelegate
解決了問題。
我覺得這是我的問題這個代碼'[[[[[UIApplication sharedApplication] keyWindow] rootViewController] presentViewController:self.imagePicker animated:YES completion:nil];'給出錯誤:'Warning:嘗試呈現
其實,我完全重寫了這部分代碼。我不知道自己究竟出了什麼問題,以及我如何解決問題......對不起,我無法提供任何幫助。 –
對於後人,這裏是我如何解決這個問題。在頁面上搜索「hack」以查看實現。 https://github.com/fulldecent/FDTake/blob/master/FDTakeExample/FDTakeController.m –
我相信問題是你沒有設置適當的模式演示風格。 http://developer.apple.com/library/ios/documentation/uikit/reference/UIViewController_Class/Reference/Reference.html#//apple_ref/doc/c_ref/UIModalPresentationStyle
此示例應該在您現有的視圖控制器上觸發全屏模式。
[self setModalPresentationStyle:UIModalPresentationFullScreen];
ViewController2 *vc = [[ViewController2 alloc] initWithNibName:@"ViewController2" bundle:nil];
[self presentViewController:vc animated:YES completion:NULL];
不幸的是,這是行不通的,該觀點仍然存在於其他任何東西之後。不過謝謝! –
你用什麼方法觸發你的模態?我注意到測試的一件事是,如果我試圖在viewDidLoad中調用它,我沒有看到我的模態,但是如果我在viewDidAppear方法中調用模態,我可以看到它。 – propstm
在調用'viewDidAppear'後很長時間,用戶按下按鈕時會觸發模式。我已經成功完成了數千次,但今天我錯過了一些東西。這讓我感到困惑。 –
不知道如果你使用一個按鈕來呈現視圖控制器,但如果你是這應該工作。在視圖控制器中創建一個新的函數,如下所示。這會在視圖中實例化您的視圖和導航控制器,以便之後可以解散。
- (void)buttonPressed {
UIViewController *yourViewController = [[UIViewController alloc] initWithNibName:nil bundle:nil];
UINavigationController *navigationController = [[UINavigationController] alloc] initWithRootViewController:yourViewController];
[self presentModalViewController:navigationController animated:YES];
}
然後在viewDidLoad中你有這樣的事情(如果你是從一個按鈕呈現它)。下面的代碼是針對UIBarButtonItem的,但其他按鈕應該以類似的方式工作。只要確保將操作參數設置爲@selector(buttonPressed),或者在按下按鈕時調用所需函數的名稱。
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] init]
target:self
action:@selector(buttonPressed)];
我實際上擁有相同的代碼,來自'UINavigationController'實例的appart。可悲的是,增加它沒有效果。另外,在某些情況下,我提供了一個'UIImagePickerController',它不需要導航控制器。使用'UIImagePickerController'讓我相信控制器是在當前視圖後面顯示的,因爲在這種情況下,狀態欄消失了,並覆蓋了「攝像機視圖」。 –
也許你在UIWindow有一些意見? –
@AliaksandrAndrashuk我不知道我在這裏得到你的意思... –