是否有可能在iOS 6中知道UIStoryboardSegue
何时完成其转换?就像当我添加一个UIStoryboardSegue
从UIButton
推导向另一个UIViewController
导航控制器上,我想推后推完成后的东西。如何在segue完成后执行一些代码?
回答
您可以使用UINavigationControllerDelegate
协议,然后定义:
– navigationController:didShowViewController:animated:
如果你不想使用viewDidAppear:
方法,你可以创建一个自定义的segue。在perform
方法中,您将为动画使用动画,并且可以有一个完成块。您可以在动画完成后将代码添加到那里。
所以在Storyboard中使用标准的拖放式继承是不可能的? – hakonbogen
这是你如何创建它,但你必须继承'UIStoryboardSegue'并在其中实现'perform'方法。之后,在'storyboard'中,您将segue的课程设置为您刚刚创建的课程。 – Levi
您可以使用 - (空)prepareForSegue:(UIStoryboardSegue *)赛格瑞发件人:(ID)发送
权之前在源UIViewController中执行赛格瑞此方法将被调用。如果您想在目标UIViewController中执行一些代码,您可以获得segue的目标视图控制器。
您也可以将此代码添加到desintation viewController中的viewdidAppear中。
您可以在prepareForSegue方法中调用目标方法UIViewController。
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NSLog(@"prepareForSegue: %@", segue.identifier);
if ([segue.identifier isEqualToString:@"Happy"]) {
[segue.destinationViewController setHappiness:100];
} else if ([segue.identifier isEqualToString:@"Sad"]) {
[segue.destinationViewController setHappiness:0];
}
}
这里setHappiness方法是目的地控制器,这里有100个传递。所以你可以写在目标控制器的方法,在这里称之为
这并不能真正指出什么时候实际的赛季完成,但这发生在赛季开始时 – Sam
在斯威夫特,从UIViewController
子类,你可以得到UINavigationController
实例,并设置代表,以便了解有关赛段的完成情况,如图所示。跟踪赛段的另一个合理位置可能是AppDelegate
。
实施例(VC的简称):
class MyViewControllerSubclass : UIViewController, UINavigationControllerDelegate {
func viewDidLoad() {
self.navigationController.delegate = self
}
func navigationController(navigationController: UINavigationController, didShowViewController viewController: UIViewController, animated: Bool) {
println("Did show VC: \(viewController)")
}
}
但是,这仅显示了当SEGUE到VC完成后, 如VC将viewWillAppear()
或viewDidAppear()
委托方法被呈现;然而,他们并不知道何时目标VC是联合国-介绍。
在您要跟踪的VC中,可以添加以下内容来检测VC(及其内存)何时解除分配,或覆盖viewWillDisappear()
方法。
deinit {
println(__FUNCTION__, "\(self)")
}
- 1. Javascript如何在forEach完成执行后运行一些代码
- 2. downloadTask完成后执行segue
- 3. 如何在UIView自定义绘图代码完成后执行一些代码?
- 4. ios - 如何使一个segue只在一些代码执行后才起作用?
- 5. 如何在特定线程完成其工作后执行一些代码?
- 6. 在某些代码完成执行后延迟$ ajax调用
- 7. IOS-如何在segue完成后执行函数objective-c
- 8. 如何在当前演示文稿完成后执行segue
- 9. 方法完成后执行代码
- 10. 执行代码AFTER Recaptcha.reload()完成后
- 11. iPhone:UIDeviceOrientation变更完成后执行代码
- 12. 任务完成后JavaFX执行代码
- 13. C#在BackgroundWorker后执行一些操作RunWorker完成完成
- 14. 我想在完成另一个代码后执行一个代码
- 15. 芹菜链完成时执行一些代码
- 16. 如何在完成另一个线程中的代码块后执行任务
- 17. 如何在所有线程完成后才执行一段代码
- 18. 在完成Web服务调用后执行segue Swift3
- 19. 如何执行一些的jQuery或JavaScript代码重定向已完成
- 20. 如何在上一篇文章完成后运行代码?
- 21. startActivity完成后执行某些操作
- 22. AngularJS如何在某些功能完成后执行功能?
- 23. 如何在swift3完成5个文件下载请求后执行segue
- 24. 如何用NGRX改变状态后执行一些代码?
- 25. 成功完成JAAS登录后执行代码
- 26. Jquery - 在AJAX调用完成后确保代码块执行?
- 27. 执行代码只有在下载完成后才解压PHP
- 28. 在PHP中完成HTTP请求后执行代码?
- 29. jQuery函数在执行完成后跳入jQuery源代码
- 30. 是否可以在pool.map完成python作业后执行代码?
没有我期望的那么糟糕。 'self.navigationController = self;'并添加该方法。我将控制器保存到基于Segue ID的局部变量中,然后将这些值与传递的ViewController进行比较。 –
这将适用于原始视图控制器具有导航控制器的推送段,但在模态段的情况下该怎么办? – Drux
我使用了来自Levi的Segue自定义的答案,并且在这里实现了我的'perform'像这样的例子:http://stackoverflow.com/a/23778394/586489这很好用,我知道什么时候push完成并且可以使用segues。 –