在 iOS 5 上,当我尝试从另一个视图控制器呈现任何视图控制器时,使用presentModalViewController
,模态视图呈现在当前视图后面。
由于它在 iOS 4 上运行良好并且知道它presentModalViewController
在 iOS 5 中已被弃用,所以我尝试使用presentViewController
但没有运气。
这是我第一次遇到这个问题,有什么想法会导致这种奇怪的行为吗?
我终于找到了问题所在。由于一些尴尬的原因,rootViewController
根窗口的设置不正确,导致模态视图出现奇怪的行为。
更令人费解的是,到目前为止它在 iOS 4 上运行良好,而在 iOS 5 上却失败了。我相信我仍然错过了导致这种麻烦的真正原因,但正确设置rootViewController
inAppDelegate
解决了问题。
我认为问题在于您没有设置正确的模态演示样式。 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];
不确定您是否使用按钮来呈现视图控制器,但如果您是,这应该可以工作。在您的视图控制器中创建一个新函数,如下所示。这会在您的视图中实例化您的视图和导航控制器,以便之后可以将其关闭。
- (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)];