presentModalViewController不工作?

时间:2012-06-19 21:48:00

标签: iphone uiviewcontroller presentmodalviewcontroller

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

-(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第三个视图已上传) 在第一次查看中等待结果(失败没有任何反应)

我的目标是从第一次见到它!

1 个答案:

答案 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];
    //...
}