0

我正在使用两个视图控制器制作应用程序。当我处理我的第一个视图时,我可以使用按钮“设置”转到另一个视图,连接到此按钮的方法如下所示:

-(IBAction)Settings:(id)sender{

[self presentModalViewController:settingsHandle animated:YES];

settingsHandle 是第二个视图类的对象,在加载第一个视图时分配。

当我在第二个视图中并且我调用包含 NSTimer 对象的方法时,我的问题就开始了。此方法在 hmmm 期间有效,可以说是 30 秒,但也可以是 5 分钟,此方法的结果是调用第三个视图的另一个视图。

在第二个视图中等待此函数的结果时一切正常。结果是我在第三个视图中。

当方法工作期间,我从第二个视图(使用[self dismissModalViewControllerAnimated:YES];)转到第一个视图时,我可以看到该方法已经完成(使用 NSLOG)但[self presentModalViewController:thirdview animated:YES];没有工作,只是没有任何反应。

所以总结一下:

在第二个视图中等待结果(成功上传第三个视图) 在第一个视图中等待结果(失败没有任何反应)

我的目标是从第一眼看到它发生!

4

1 回答 1

0

你不能提出一个ModalViewControllerViewController解雇的人。因此,您需要跟踪可见ViewControllerpresentModalViewController从那里调用。在您的场景中,最简单的解决方案是让您NSTimer在第一个调用方法ViewController时像这样

- (void)presentViewController:(NSTimer *)timer
{
    if(self.modalViewController == nil)
        [self presentModalViewController:settingsHandle animated:YES];
    else
        [self.modalViewController presentViewController];
}

如果您在 2. 中创建 NSTimer,您ViewController当然需要对第一个ViewController. 你可以像这样传递这个参考

-(IBAction)Settings:(id)sender{
    settingsHandle.myParentViewController = self; //You need to create this var in settingsHandle
    [self presentModalViewController:settingsHandle animated:YES];
    //...
}
于 2012-06-19T22:28:06.350 回答