我正在尝试创建自定义序列。第一次不起作用。之后,我通过创建一个扩展UIStoryboardSegue的新文件并创建一个称为“ perform”的方法找到了解决方案。现在就可以使用,而无需在ViewController中使用prepareSegue。我已将以前的代码从prepareSegue复制到新的UIStoryboardSegue文件中的“ Perform”函数中。它打印出消息,但委托不起作用。查看控制器class ViewController: UIViewController {override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib.}override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated.}}自定义Segueclass CustomSegue: UIStoryboardSegue {let transitionManager = TransitionManager()override func perform() { NSLog("Perform"); let toViewController = self.destinationViewController as UIViewController toViewController.transitioningDelegate = self.transitionManager}}我在Transition Manager的每个函数中都设置了断点,但它们都没有执行和停止。Segue设置:问题:TransitioningDelegate无法正常工作完整的源代码:here 最佳答案 问题是您的perform实现不执行任何操作:override func perform() { let toViewController = self.destinationViewController as UIViewController toViewController.transitioningDelegate = self.transitionManager}您要做的就是创建一个视图控制器,为其提供过渡委托,然后将其丢弃。您不执行任何过渡!但是,这恰恰是安全的工作。目前尚不清楚您可能期望发生什么。如果想法是应该将其作为当前(模态)序列,则应在情节提要中将其作为当前(模态)序列,指定您的自定义序列类,然后在perform实现中,调用进行实际演示:override func perform() { let toViewController = self.destinationViewController as UIViewController toViewController.transitioningDelegate = self.transitionManager super.perform() // this will work, _if_ you have specified a present (modal) segue}或者,您的super可以通过以目标视图控制器为参数在源视图控制器上调用perform来自己执行演示。但是您的presentViewController:...什么也不做。一无所有。关于ios - 自定义segue在iOS 9.1中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33489673/
10-11 17:37