我在故事板中使用segue来呈现模态视图控制器。而不是segue我可以使用presentViewController:animated:completion在完成块中执行某些操作。
但现在我不知道segue什么时候结束,以及我的完成代码放在哪里
以下是我之前使用的代码:
presentViewController:modalViewController animated:YES completion:^{
modalViewController.items = items;
[modalViewController showItem:itemdIndex];
}];
我需要从外面调用modalViewController方法。
答案 0 :(得分:2)
你必须继承UIStoryboardSegue
并在其中实现perform方法。之后,在storyboard中,将segue的类设置为刚刚创建的类。
或者您可以将代码放在您正在观看的视图的ViewDidLoad
或ViewWillAppear
方法中。
最好以这种方式使用ViewDidLoad
,只有在首先加载视图时才会执行一次代码。
答案 1 :(得分:1)
将它们放在viewWillAppear:
的视图控制器中,你正在选择它。
注意:如果要将视图控制器添加到堆栈(如UINavigationController
内),每次视图控制器被调用时都会调用viewWillAppear:
(即使你要来了)从另一个视图控制器回到它)。如果您希望代码只运行一次(最初加载时),请将其放在viewDidLoad
中。
答案 2 :(得分:0)
您可以通过编程方式完成:
let storyboard = UIStoryboard(name: "MyStoryboardName", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "someViewController")
self.present(controller, animated: true, completion: {
// put your code that you want to execute after perform segue finished
})