我的控制器有两个视图。
应用程序以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
从未打过电话。
答案 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
将会起作用。