确定何时返回ViewController

时间:2011-10-24 12:42:36

标签: objective-c ios

我的控制器有两个视图。 应用程序以FirstViewController开头。 然后使用按钮打开SecondViewController

使用其他按钮,我会忽略SecondViewController以返回FirstViewController

有没有办法在FirstViewController中检测到它已恢复焦点?

编辑:好的,我查看答案并使用viewWillAppear,但如果我使用UIModalPresentationFormSheet则无效。

-(IBAction)openSecondView{
    SecondViewController *screen = [[SecondViewController alloc] initWithNibName:nil bundle:nil];
    screen.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
    screen.modalPresentationStyle = UIModalPresentationFormSheet;
    [self presentModalViewController:screen animated:YES];
    [screen release];
}

使用关闭按钮关闭此视图。

viewWillAppear从未打过电话。

5 个答案:

答案 0 :(得分:2)

实现UIViewController的viewWillAppear方法

- (void) viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];

}

答案 1 :(得分:1)

添加委托(协议)方法。在解除SecondViewController之前调用委托方法。

有关委托的详细信息,请参阅delegate

答案 2 :(得分:0)

viewWillAppear

FirstViewController
- (void) viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    NSLog(@"view 1 focused");
}

答案 3 :(得分:0)

viewWillAppear的实现:只有当你使用导航控制器或tabbarcontroller显示另一个控制器时,回调才会起作用+这种方法你需要以某种方式检查这是否只是视图的第一次出现,或被其他人调用原因;

使用代理,如上面Gomathi所描述的那样是一个更好的选择!

答案 4 :(得分:0)

取决于您如何设置第一个视图控制器。将其封装在UINavigationViewController中(如果你不想要导航栏,你可以随时将其设置为隐藏([self.navigationController.navigationBar setHidden:YES])。ViewWillAppear将会起作用。