以编程方式执行segue并仍然在故事板中

时间:2018-04-17 12:54:51

标签: ios swift segue uistoryboard

一旦我点击表格单元格,我想从嵌入在导航控制器中的tableview转到另一个视图控制器。我仍然希望将第二个视图控制器嵌入到同一个导航控制器中。因此,我通过故事板创建了segue。

但是,如果应该执行segue,我想在敲击单元格后进行有条件的检查。

我已经检查了方法require.extensions,这将满足我的需求,但不幸的是,它在表单击处理程序之前执行。如果我删除故事板segue并且仅通过.js进行segue,我的第二个视图控制器就不再嵌入到同一个导航控制器中。

有什么建议吗?

这是我的代码:

shouldPerformSegueWithIdentifier

3 个答案:

答案 0 :(得分:5)

您应该从视图控制器本身而不是单元格开始故事板segue。这样,如果点击一个单元格,它就不会自动执行。

segue from view controller

如果您想在不使用故事板segue的情况下将视图控制器推送到导航堆栈,请使用UINavigationController的{​​{1}}:

pushViewController

答案 1 :(得分:1)

将故事板标识符分配给InputVC,说出"input_vc"。然后用storyboard实例化它。然后推送到InputVC它将在同一导航堆栈上。

enter image description here

didSelectRow中的代码添加为:

然后使用故事板实例化您的InputVC。然后推送到InputVC它将在同一导航堆栈上。

guard let inputVC = storyboard?.instantiateViewController(withIdentifier: "input_vc") as? InputVC else { return }
inputVC.app = app
self.navigationController?.pushViewController(secondVc, animated: true)

答案 2 :(得分:1)

以编程方式,您可以这样做

let lvc = storyboard?.instantiateViewController(withIdentifier: "yourViewController") as? yourViewController 
self.navigationController?.pushViewController(lvc, animated: true)