Cocoa Touch - dismissModalViewControllerAnimated:YES不起作用

时间:2011-09-16 08:27:06

标签: iphone objective-c modalviewcontroller presentmodalviewcontroller

Hihi all,

这可能是一个相当简单的问题,但我是新手,无法解决问题。好的,这是问题所在:

  1. 我有主视图控制器,在此控制器的viewdidAppear委托中,我使用[self presentModalViewController animated:YES];来显示我的第二个视图。
  2. 在我的第二个视图控制器中的一个方法中,它为某个进程启动了第三个控制器。
  3. 在第三个控制器中的过程之后,它再次启动第二个控制器以调用第二个控制器中的方法。在这种方法中,我使用[self dismissModalViewControllerAnimated:YES];,但第二种观点只是拒绝解散。
  4. 希望我对自己的情况足够清楚。请指教。提前谢谢!

    :)

2 个答案:

答案 0 :(得分:1)

@from post:在第三个控制器中的进程之后,它再次启动第二个控制器来调用第二个控制器中的方法。

这表明你正在启动一个没有提供modalViewController的secondViewController的新实例。您应该为实际呈现它的实例调用dismissModalViewControllerAnimated。

如下所示

像这样设计你的第三个ViewController

@class SecondView;
@interface ThirdView : UIViewController {
    SecondView *secondViewRefPointer;

}
@property (nonatomic, retain) SecondView * secondViewRefPointer;
@end

//While adding the third view from the secondView
ThirdView *thirdViewInstance = [[ThirdView alloc]init];
thirdViewInstance.secondViewRefPointer = self; //self will refer to the current secondView instance

...

在第三个视图中调用dismissModalViewController,如下所示

[secondViewRefPointer dismissModalViewControllerAnimated:YES];

答案 1 :(得分:0)

作为点击和试用,只需先尝试通过第三个视图中的任何按钮触发操作调用dismissModalViewControllerAnimated:YES。如果这样可行,请使用NSLog并检查方法是否调用。通过这种方式,您可以确定应该将dismissModalViewControllerAnimated放在哪里:是。

希望这有帮助。