当用户点按后退按钮时,我需要一种根据用户输入更改文本的方法。我遵循了这个解决方案:Find out if user pressed the back button in uinavigationcontroller?
并在viewDidLoad
中添加了以下代码:
if ([self isMovingFromParentViewController]) {
NSLog(@"isMoved");
[self.delegate stringChangedTo:self.myTextField.text atIndex:self.indexToPass];
}
然而,没有任何改变。更多的是,不调用方法(NSLog
不输出字符串)。
如果用户点击后退按钮,我怎么能找到一种方法来呼叫委托?
答案 0 :(得分:2)
该代码必须位于viewWillDisappear:
或viewDidDisappear:
。不是viewDidLoad
。
viewDidLoad
。您希望在取消视图控制器时调用委托。
答案 1 :(得分:1)
还有UINavigationControllerDelegate协议。通过实现以下任一方法,可以在显示给定视图控制器时收到通知:
-navigationController:willShowViewController:animated:
-navigationController:didShowViewController:animated:
<强>附录:强>
在我看来,使用委托是一个更简洁的设计,因为您会在导航事件发生时得到准确的通知。当您呈现/关闭模态视图控制器时,可以调用视图控制器生命周期方法(如-viewDidDisappear:
等),并要求您添加逻辑以识别这些。