惠州做网站 百度优化,珠海医疗网站建设公司,wordpress iphone app,赣州百姓网0x00 视图结构
1-根视图 1.1-控制器A 1.1.1-控制器B 1.1.1.1-控制器C 0x01 控制
通过设置 self.navigationController.interactivePopGestureRecognizer.enabled 为 YES 或 NO 来控制当面界面#xff0c;是否能左滑返回
在 控制器B 的生命周期方法内#xff0c;设置属性 s…0x00 视图结构
1-根视图 1.1-控制器A 1.1.1-控制器B 1.1.1.1-控制器C 0x01 控制
通过设置 self.navigationController.interactivePopGestureRecognizer.enabled 为 YES 或 NO 来控制当面界面是否能左滑返回
在 控制器B 的生命周期方法内设置属性 self.navigationController.interactivePopGestureRecognizer.enabled
viewDidAppear (已经出现) - NO viewDidDisappear (已经消失) - YES
- (void)viewWillAppear:(BOOL)animated {[super viewWillAppear:animated];NSLog(控制器B viewWillAppear 11 %, (self.navigationController.interactivePopGestureRecognizer.isEnabled));
}- (void)viewDidAppear:(BOOL)animated{[super viewDidAppear:animated];self.navigationController.interactivePopGestureRecognizer.enabled NO;NSLog(控制器B viewDidAppear 22 %, (self.navigationController.interactivePopGestureRecognizer.isEnabled));
}- (void)viewWillDisappear:(BOOL)animated
{[super viewWillDisappear:animated];NSLog(控制器B viewWillDisappear 33 %, (self.navigationController.interactivePopGestureRecognizer.isEnabled));
}- (void)viewDidDisappear:(BOOL)animated
{[super viewDidDisappear:animated];self.navigationController.interactivePopGestureRecognizer.enabled YES;NSLog(控制器B viewDidDisappear 44 %, (self.navigationController.interactivePopGestureRecognizer.isEnabled));
}1、根视图 跳转 控制器A 输出日志
控制器A viewWillAppear 1 1
控制器A viewDidAppear 2 12、控制器A 跳转 控制器B 输出日志
控制器A viewWillDisappear 3 1
控制器B viewWillAppear 11 1
控制器A viewDidDisappear 4 1
控制器B viewDidAppear 22 0 ( 在这里设置的 NO)3、控制器B 跳转 控制器C 输出日志
控制器B viewWillDisappear 33 0
控制器C viewWillAppear 111 0
控制器B viewDidDisappear 44 1 ( 在这里设置的 YES)
控制器C viewDidAppear 222 1返回
3、左滑返回控制器C 返回 控制器B 输出日志
控制器C viewWillDisappear 333 1
控制器B viewWillAppear 11 1
控制器C viewDidDisappear 444 0
控制器B viewDidAppear 22 0此时 控制器B 无法左滑返回正确
2、控制器B 返回 控制器A 输出日志
控制器B viewWillDisappear 33 0
控制器A viewWillAppear 1 0
控制器B viewDidDisappear 44 0 ( 在这里设置的 YES但打印出来却是 NO)
控制器A viewDidAppear 2 0导致 控制器A 无法左滑返回 根视图也就是设置了也无效 0x02 控制2
既然在 viewDidDisappear 设置 YES 无效。 那就只能在 viewWillDisappear (将要消失) 这个方法里面设置了。
1、根视图 跳转 控制器A 输出日志
控制器A viewWillAppear 1 1
控制器A viewDidAppear 2 12、控制器A 跳转 控制器B 输出日志
控制器A viewWillDisappear 3 1
控制器B viewWillAppear 11 1
控制器A viewDidDisappear 4 1
控制器B viewDidAppear 22 0 ( 在这里设置的 NO)3、控制器B 跳转 控制器C 输出日志
控制器B viewWillDisappear 33 1 ( 在这里设置的 YES)
控制器C viewWillAppear 111 1
控制器B viewDidDisappear 44 1
控制器C viewDidAppear 222 1返回
3、左滑返回控制器C 返回 控制器B 输出日志
控制器C viewWillDisappear 333 1
控制器B viewWillAppear 11 1
控制器C viewDidDisappear 444 0
控制器B viewDidAppear 22 0此时 控制器B 无法左滑返回正确
2、控制器B 返回 控制器A 输出日志
控制器B viewWillDisappear 33 1 ( 在这里设置的 YES)
控制器A viewWillAppear 1 1
控制器B viewDidDisappear 44 0
控制器A viewDidAppear 2 1控制器A 可以左滑返回 根视图也就是设置对了 0x03 猜测
如果在 viewWillAppear 内设置 NO会有什么效果呢
1、根视图 跳转 控制器A 输出日志
控制器A viewWillAppear 1 1
控制器A viewDidAppear 2 12、控制器A 跳转 控制器B 输出日志
控制器A viewWillDisappear 3 1
控制器B viewWillAppear 11 0 ( 在这里设置的 NO)
控制器A viewDidDisappear 4 0
控制器B viewDidAppear 22 0 3、控制器B 跳转 控制器C 输出日志
控制器B viewWillDisappear 33 1 ( 在这里设置的 YES)
控制器C viewWillAppear 111 1
控制器B viewDidDisappear 44 1
控制器C viewDidAppear 222 1返回
3、左滑返回控制器C 返回 控制器B 输出日志
控制器C viewWillDisappear 333 1
控制器B viewWillAppear 11 0 (viewWillAppear)此时无法从 控制器C 左滑返回 控制器B 了
所以如果在 控制器B 的方法 viewWillAppear 内设置 NO它的下级页面就无法左滑返回了。 0x04 结果
在 viewDidAppear 里面设置 NO 在 viewWillDisappear 里面设置 YES 以此来禁止当前界面的左滑返回。
- (void)viewWillAppear:(BOOL)animated {[super viewWillAppear:animated];NSLog(控制器B viewWillAppear 11 %, (self.navigationController.interactivePopGestureRecognizer.isEnabled));
}- (void)viewDidAppear:(BOOL)animated{[super viewDidAppear:animated];// 这里设置 NOself.navigationController.interactivePopGestureRecognizer.enabled NO;NSLog(控制器B viewDidAppear 22 %, (self.navigationController.interactivePopGestureRecognizer.isEnabled));
}- (void)viewWillDisappear:(BOOL)animated
{[super viewWillDisappear:animated];// 这里设置 YESself.navigationController.interactivePopGestureRecognizer.enabled YES;NSLog(控制器B viewWillDisappear 33 %, (self.navigationController.interactivePopGestureRecognizer.isEnabled));
}- (void)viewDidDisappear:(BOOL)animated
{[super viewDidDisappear:animated];NSLog(控制器B viewDidDisappear 44 %, (self.navigationController.interactivePopGestureRecognizer.isEnabled));
}