我正在使用两个视图控制器进行应用程序。当我处理第一个视图时,我可以使用“设置”按钮转到另一个视图,并且连接到此按钮的方法如下所示:
-(IBAction)Settings:(id)sender{
[self presentModalViewController:settingsHandle animated:YES];
settingsHandle是第二个视图类的对象,在加载第一个视图时会被分配。
当我在第二个视图中时,我的问题开始,我调用包含NSTimer对象的方法。这个方法在hmmm工作期间可以说30秒但也可以是5分钟,这个方法的结果是调用另一个视图第3个。
在第二个视图中等待此函数的结果时,一切正常。结果是我处于第三视图。
当方法工作期间,我将从第二个视图开始(使用[self dismissModalViewControllerAnimated:YES];
)我可以看到该方法已完成(使用NSLOG),但[self presentModalViewController:thirdview animated:YES];
不起作用,没有任何反应。
总结一下:
在secodnview中等待结果(Succes第三个视图已上传) 在第一次查看中等待结果(失败没有任何反应)
我的目标是从第一次见到它!
答案 0 :(得分:0)
您无法提供被解雇的ModalViewController
ViewController
。因此,您需要跟踪可见的ViewController
并从那里调用presentModalViewController
。在您的方案中,最简单的解决方案是让您的NSTimer
在您的第一个ViewController
中调用一个类似这样的方法
- (void)presentViewController:(NSTimer *)timer
{
if(self.modalViewController == nil)
[self presentModalViewController:settingsHandle animated:YES];
else
[self.modalViewController presentViewController];
}
如果您在2. ViewController
中创建NSTimer,则当然需要引用第一个ViewController
。你可以像这样传递这个引用
-(IBAction)Settings:(id)sender{
settingsHandle.myParentViewController = self; //You need to create this var in settingsHandle
[self presentModalViewController:settingsHandle animated:YES];
//...
}