【发布时间】: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)")
}
我做了以下事情:
- 为第二个屏幕创建了一个自定义视图控制器类(在我的故事板中并作为 .swift 文件)。我将情节提要中的相应
ViewController分配给身份检查器中的自定义视图控制器 - 为按钮上的单击事件创建了
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