将信息发送到我在导航控制器中返回的视图

Posted

技术标签:

【中文标题】将信息发送到我在导航控制器中返回的视图【英文标题】:Sending information to a view I'm returning to in Navigation Controller 【发布时间】:2014-12-01 17:27:55 【问题描述】:

我有一个包含两个不同视图中的 UIView 的应用。我希望这两个 UIView 显示相同的自定义绘图,并且一个可编辑,一个不可编辑。当我从一个视图控制器切换到下一个视图控制器时(从具有不可编辑视图的 vc 到可编辑视图),我看到 UINavigation 控制器中的后退按钮。现在,在我编辑视图之后,我希望将更改反映在不可编辑的视图中。我想通过在按下后退按钮时收到通知来做到这一点。到目前为止,我尝试过的没有奏效:

public class BlockingViewController: UIViewController, UINavigationControllerDelegate 

    func navigationController(navigationController: UINavigationController, viewController: UIViewController, animated: Bool) 
        print("In function")
    

我从 https://developer.apple.com/library/ios/documentation/UIKit/reference/UINavigationControllerDelegate_Protocol/index.html 获取了 navigationController 方法签名,但我不确定我做了哪些更改使其无法正常工作。我取出了可选声明,因为包含它会给我一条错误消息,指出“可选只能应用于协议成员”。我以为这是协议成员,但我猜不是。

【问题讨论】:

【参考方案1】:

该函数声明不正确。应该是这样的,

func navigationController(navigationController: UINavigationController, didShowViewController viewController: UIViewController, animated: Bool) 
        println("In function")
    

(或者 willShowViewController,如果你想要那个)

【讨论】:

为什么在这种情况下需要它,而不是方法名称或其他东西?当它可以被称为“willShowViewController”时,调用函数“navigationController”似乎毫无意义。还有,为什么可以在参数名前加上呢? 改成那个给了我一个错误,然后把它改成 public func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) 没有给我一个错误,但它也没有当我按下后退按钮时不会被调用。 @user1493950,至于您的第一条评论,Apple 是这样命名的,所以就是这样——我只是输入了“navigationContr”,然后从它放置的完成列表中选择了该方法向上。您是否将拥有此代码的控制器设置为导航控制器的委托? 我可以从情节提要中设置委托吗?我不确定如何执行此操作,或者委托的具体用途。 我想我可以在转场时在代码中做到这一点,但我不是从 UINavigationController 转场,而是从 UIViewController 转场到另一个 UIViewController,所以我不确定 UINavigationController 参考来自哪里.

以上是关于将信息发送到我在导航控制器中返回的视图的主要内容,如果未能解决你的问题,请参考以下文章

当我在 iPhone 的导航栏上单击返回时,如何弹出到所需的视图控制器

如何在所有视图控制器中将自定义 uibarbuttonItem 添加到我的导航项?

导航控制器弹出动画时导航栏向上移动

从堆栈释放视图,带有导航控制器的标签栏

无法使用导航控制器锁定视图控制器上的设备方向

向导航控制器添加按钮