2011-11-26 92 views
0

我有一个问题让我的模态视图控制器正确显示,然后解雇。基本上我有一个模态显示的登录窗口,我想从数据库中加载所有想要显示的数据后解散它。如果我叫不能关闭模态视图控制器

[self dismissModalViewControllerAnimated:YES]从LoginViewController类中它完全正常,但如果我叫

[[mainController modalViewController] dismissModalViewControllerAnimated:YES]我DataManager类中后,我已经成功导入没有任何反应的数据。这是非常令人困惑的,因为[mainController modalViewController]指向locationManager类。

有没有人有任何想法,为什么这不工作?如果有问题,我正在为iOS 4编程。

谢谢!

+0

你是如何呈现的呢? – hypercrypt

+0

我正在使用:[_splitViewController presentModalViewController:loginViewController animated:YES];在应用程序DIdFinishLaunchingWithOptions – FreaknBigPanda

回答

3

行,所以我想通了这一点。基本上,发生的事情是[self dismissModalViewController]调用发生在另一个线程上,无论出于何种原因,这意味着该对象没有正确处理关闭消息。最后我用像这样的通知,然后叫dismissModalView控制器:

- (void)dismissSelf 
{ 
    [self dismissModalViewControllerAnimated:YES];  
} 

- (void)receiveDismissNotification:(NSNotification *) note 
{ 
    [self performSelectorOnMainThread:@selector(dismissSelf) withObject:nil waitUntilDone:NO]; 
} 

其中工程

3

解除模态视图控制器的正确方法是在显示它的视图控制器上调用-dismissModalViewControllerAnimated:。因此它应该是[_splitViewController dismissModalViewControllerAnimated:YES];

从您的意见,您需要调用-dismissModalViewControllerAnimated:在主线程上,你可以做到这一点,像这样:

dispatch_async(dispatch_get_main_queue(), ^{ 
    [_splitViewController dismissModalViewControllerAnimated:YES]; 
}); 
+0

我尝试过:[mainController dismissModalViewControllerAnimated:YES],它不工作... – FreaknBigPanda

+0

我设置mainController在应用程序完成启动与选项:[[DataStore defaultStore] setMainController:_splitViewController]; – FreaknBigPanda

+0

不正确。解除模态视图控制器的正确方法是在模态视图控制器本身上调用该方法。 – Steve

1

关闭模型视图控制器使用下面的代码

[self dismissModalViewControllerAnimated:YES]; 

此代码也适用于ios 5。

呈现的模型视图控制器

if (self.viewController!=nil) 
{ 
     //sanity check for view controller 
     [self.viewController SOMEVIEW animated:YES]; 
} 
相关问题