将多个 ViewController 推送到 NavigationController 堆栈时的 iOS 委托(delegate)问题

标签 ios swift delegates navigationcontroller

我有一些代码将两个 ViewController 推送到 NavigationController 堆栈。这是因为我想打开菜单的“子菜单” View 。

let menuVC = storyboard!.instantiateViewControllerWithIdentifier("menuView") as! MenuTableViewController
            menuVC.delegate = self

let menuSubVC = storyboard!.instantiateViewControllerWithIdentifier("menuViewSub") as! SubscriptionsTableViewController
            menuSubVC.delegate = menuVC

            controllers?.append(menuVC)
            controllers?.append(menuSubVC)

navigationController?.setViewControllers(controllers!, animated: true)

正如您在代码中看到的,有一些委托(delegate)参与其中。 menuSubVC 中的一种方法调用 menuVC 中的委托(delegate)方法,当我尝试将 ImageView 导出设置为新的空图像时,该方法给我一个错误:

allCheckmark.image = UIImage()

为什么这不起作用?当我打开菜单然后打开子菜单时它工作得很好,但是如果我用上面的代码将两者插入堆栈,它就不起作用。

最佳答案

当您将两者插入堆栈时,subMenuVC 位于下方,因此未加载 View ,这意味着没有设置任何 IBOutlet。

关于将多个 ViewController 推送到 NavigationController 堆栈时的 iOS 委托(delegate)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33631306/

相关文章:

ios - iOS 应用程序需要 2GB RAM

ios - MFMailComposeViewController 委托(delegate)不适用于 swift 4

ios - 使用委托(delegate)将数据推回

ios - AVAudioSession.sharedInstance().outputVolume 未始终返回正确的音量

ios - 使用 GL_POINTS 通过 OpenGL 改变线宽 (iOS)

c# - 无法将类型 `UnityEngine.Events.UnityAction<string>' 隐式转换为 `UnityEngine.Events.UnityAction'

ios - 在 UIView/UIViewController 关系中定义委托(delegate)

ios - 如何在 iOS 上让 Meteor Cordova *不*全屏?

javascript - IOS/android + PhoneGap/cordova框架中的返回键

ios - 使用 UIGraphicsImageRenderer 渲染全尺寸图像