【问题标题】:self.navigationController? is nil when pushing from a objective-c viewController to a Swift ViewControllerself.navigationController?从objective-c viewController 推送到Swift ViewController 时为nil
【发布时间】:2014-12-30 16:18:22
【问题描述】:

在使用此代码从 Objective C 类推送到 Swift 类后,我试图显示导航控制器的工具栏,但工具栏未显示:

self.navigationController?.setToolbarHidden(false, animated: false)

然后我打印了self.navigationController?它返回 nil。

如果我从 Obj-C 转到 Obj-C,就会找到 navigationController。

有什么解决办法吗?

【问题讨论】:

  • 你误解了这个问题。这与语言无关。如果self.navigationController 为 nil,则此视图控制器实例的视图在导航界面中 not - 简单明了。
  • 嗯,我就是这么想的。但是视图控制器与我的其他视图控制器一样包含在情节提要中,但是这个控制器的类是用 swift 编写的。它工作得很好,但正如我提到的,我无法显示工具栏。但是,如果我在故事板中选择导航控制器并从界面构建器中打开工具栏,则工具栏正在显示..
  • 相信我,运行时比你知道的更多。如果您需要帮助了解正在发生的事情,您必须提供有关正在发生的事情的信息。这段代码在哪里?什么时候叫?这个视图控制器是如何被推送的?以此类推。
  • 我很抱歉这个不好的问题。不是我的本意。只是沮丧。显然,如果我在 viewDidAppear() 中调用 navigationController 它工作正常。在 viewDidLoad() 中它返回 nil。
  • 正是我所怀疑的。这就是为什么我试图让你告诉我它在哪里被调用。但提出问题的方式是给予信息。不要隐藏信息并依赖他人猜测。不过,恭喜你自己解决了这个问题!做得好。您甚至可以将其作为您自己的答案(您可以在 48 小时内接受)。我希望这里的教训是:相信运行时!它比你知道的多……

标签: objective-c swift navigationcontroller


【解决方案1】:

如果我在 viewDidAppear() 中调用 navigationController,它可以正常工作。我的问题是我在 viewDidLoad() 中调用它并返回 nil。

【讨论】:

    猜你喜欢
    • 2017-11-08
    • 2020-05-11
    • 2016-10-02
    • 1970-01-01
    • 2015-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多