当用户点击“返回”按钮时呼叫代表

时间:2015-11-19 00:00:39

标签: ios objective-c

当用户点按后退按钮时,我需要一种根据用户输入更改文本的方法。我遵循了这个解决方案: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不输出字符串)。

如果用户点击后退按钮,我怎么能找到一种方法来呼叫委托?

2 个答案:

答案 0 :(得分:2)

该代码必须位于viewWillDisappear:viewDidDisappear:。不是viewDidLoad

加载视图控制器视图时会调用

viewDidLoad。您希望在取消视图控制器时调用委托。

答案 1 :(得分:1)

还有UINavigationControllerDelegate协议。通过实现以下任一方法,可以在显示给定视图控制器时收到通知:

-navigationController:willShowViewController:animated:

-navigationController:didShowViewController:animated:

<强>附录: 在我看来,使用委托是一个更简洁的设计,因为您会在导航事件发生时得到准确的通知。当您呈现/关闭模态视图控制器时,可以调用视图控制器生命周期方法(如-viewDidDisappear:等),并要求您添加逻辑以识别这些。