0

在 iOS 5 上,当我尝试从另一个视图控制器呈现任何视图控制器时,使用presentModalViewController,模态视图呈现在当前视图后面。

由于它在 iOS 4 上运行良好并且知道它presentModalViewController在 iOS 5 中已被弃用,所以我尝试使用presentViewController但没有运气。

这是我第一次遇到这个问题,有什么想法会导致这种奇怪的行为吗?

4

3 回答 3

0

我终于找到了问题所在。由于一些尴尬的原因,rootViewController根窗口的设置不正确,导致模态视图出现奇怪的行为。

更令人费解的是,到目前为止它在 iOS 4 上运行良好,而在 iOS 5 上却失败了。我相信我仍然错过了导致这种麻烦的真正原因,但正确设置rootViewControllerinAppDelegate解决了问题。

于 2012-06-28T10:12:09.847 回答
0

我认为问题在于您没有设置正确的模态演示样式。 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];
于 2012-06-27T16:44:30.083 回答
0

不确定您是否使用按钮来呈现视图控制器,但如果您是,这应该可以工作。在您的视图控制器中创建一个新函数,如下所示。这会在您的视图中实例化您的视图和导航控制器,以便之后可以将其关闭。

- (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)];
于 2012-06-27T20:58:35.710 回答