我遇到问题让我的模态视图控制器正确显示然后解散。基本上我有一个模态显示的登录窗口,我想在从数据库加载我要显示的所有数据后将其关闭。如果我打电话
来自LoginViewController类的 [self dismissModalViewControllerAnimated:YES]
它可以很好地工作但是如果我调用
[[mainController modalViewController] dismissModalViewControllerAnimated:YES]
没有任何反应。这是非常令人困惑的,因为[mainController modalViewController]
指向了locationManager类。
有没有人知道为什么这不起作用?如果重要的话,我正在为iOS 4编程。
谢谢!
答案 0 :(得分:3)
解除模态视图控制器的正确方法是在呈现它的视图控制器上调用-dismissModalViewControllerAnimated:
。因此它应该是[_splitViewController dismissModalViewControllerAnimated:YES];
。
从你的评论中,你需要在主线程上调用-dismissModalViewControllerAnimated:
,你可以这样做:
dispatch_async(dispatch_get_main_queue(), ^{
[_splitViewController dismissModalViewControllerAnimated:YES];
});
答案 1 :(得分:3)
好的,所以我想出来了。基本上发生的事情是[self dismissModalViewController]调用发生在另一个线程上,无论出于何种原因,该线程意味着该对象没有正确处理dismiss消息。我最终使用了一个通知,然后调用了dismissModalView控制器,如下所示:
- (void)dismissSelf
{
[self dismissModalViewControllerAnimated:YES];
}
- (void)receiveDismissNotification:(NSNotification *) note
{
[self performSelectorOnMainThread:@selector(dismissSelf) withObject:nil waitUntilDone:NO];
}
哪个有效
答案 2 :(得分:1)
要关闭模型视图控制器,请使用以下代码
[self dismissModalViewControllerAnimated:YES];
此代码也适用于ios 5.
用于展示模型视图控制器
if (self.viewController!=nil)
{
//sanity check for view controller
[self.viewController SOMEVIEW animated:YES];
}