【问题标题】:ViewController not displaying even though segue has been triggered即使触发了 segue,ViewController 也不显示
【发布时间】:2016-02-25 11:31:08
【问题描述】:

我有一个TableViewController,我想在其导航栏中触发一个segue。我在情节提要中为我的新ViewController 创建了转场。但是,如果我单击栏按钮项,则视图不会出现。

相反,条形按钮项变为非活动状态(灰显)并且应用程序冻结。没有错误消息,应用程序也不会崩溃。我的TableViewController 中的prepareForSegue 方法也会被调用

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

   print("prepare for segue called")
   print("destination view controller = \(segue.destinationViewController.description)")

}

我做了以下事情:

  1. 为第二个屏幕创建了一个自定义视图控制器类(在我的故事板中并作为 .swift 文件)。我将情节提要中的相应 ViewController 分配给身份检查器中的自定义视图控制器
  2. 为按钮上的单击事件创建了IBAction 并触发 以编程方式进行 segue。结果保持不变。 prepareForSegue 被调用。 destionationViewController 是正确的 但没有出现。后来我删除了这个IBAction

我的目标视图控制器看起来像这样

class EnterUserDataViewController : UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        print("EnterUserDataViewController viewDidLoad called")
    }

}

viewDidLoad 永远不会被调用,即使正确的 segue 已被触发。

有人能告诉我为什么会这样吗?

【问题讨论】:

  • 您的屏幕截图是否仍与您的实际代码相符?您说您正在使用操作插座手动触发转场,但您的屏幕显示标签栏按钮直接触发转场。
  • 不,我认为我可能做错了什么。然后我尝试以编程方式触发 segue。所以我创建了一个 IBAction 并调用了 performSegueWithIdentifier。然而这并没有帮助。所以我删除了这个 IBAction 并使用了普通的“拖放”segue。回答您的问题:是的。
  • 关于这个问题的任何更新?你有能力解决它吗? @slashburn
  • 我不记得我是如何解决这个问题的。我认为问题在于 segue 被多次触发。如果应用程序冻结,如果您尝试访问不再存在的内容,通常会发生这种情况。今天,我不再使用故事板,而是以编程方式完成所有事情

标签: ios swift uitableview uiviewcontroller swift2


【解决方案1】:

您不会碰巧在某个地方设置了恶意断点吧?

如果我在视图加载周期的某处放置断点,它会重新创建您所描述的确切症状。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-17
    • 1970-01-01
    相关资源
    最近更新 更多