执行完segue后如何做某事?

问题描述 投票:3回答:3

我在故事板中使用segue来呈现模态视图控制器。而不是segue我可以使用presentViewController:animated:completion在完成块中执行某些操作。但现在我不知道segue什么时候结束,以及我的完成代码放在哪里 以下是我之前使用的代码:

presentViewController:modalViewController animated:YES completion:^{

    modalViewController.items = items;
    [modalViewController showItem:itemdIndex];
}];

我需要从外部调用modalViewController方法。

ios objective-c segue
3个回答
2
投票

你必须继承UIStoryboardSegue并在其中实现perform方法。之后,在storyboard中,将segue的类设置为刚刚创建的类。

或者您可以将代码放在ViewDidLoadViewWillAppear方法的视图中。

最好是以这种方式使用ViewDidLoad,只有在首先加载视图时才会执行一次代码。


1
投票

把它们放在viewWillAppear:中的视图控制器中。

注意:如果要将视图控制器添加到堆栈中(例如在UINavigationController中),每次视图控制器被调用时都会调用viewWillAppear:(即使您从另一个视图控制器返回它)。如果您希望代码只运行一次(最初加载时),请将其放在viewDidLoad中。


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
})
© www.soinside.com 2019 - 2024. All rights reserved.