【问题标题】:Custom segue not working in iOS 9.1自定义 segue 在 iOS 9.1 中不起作用
【发布时间】:2015-11-03 00:50:20
【问题描述】:

我正在尝试创建自定义转场。它在第一次不起作用。后来我通过创建一个扩展 UIStoryboardSegue 的新文件并创建一个名为“perform”的方法找到了解决方案。它现在可以在不使用 ViewController 中的 prepareSegue 的情况下工作。我已将之前的代码从preparedSegue 复制到新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.
}


}

自定义转场

class CustomSegue: UIStoryboardSegue {
let transitionManager = TransitionManager()
override func perform() {
    NSLog("Perform");
    let toViewController = self.destinationViewController as UIViewController

    toViewController.transitioningDelegate = self.transitionManager
}
}

我在转换管理器的每个函数中都放置了断点,它们都没有执行和停止。

转场设置:

问题:TransitioningDelegate 不工作

完整源代码:here

【问题讨论】:

    标签: ios objective-c iphone delegates segue


    【解决方案1】:

    问题是您的 perform 实现没有任何事情:

    override func perform() {
        let toViewController = self.destinationViewController as UIViewController
        toViewController.transitioningDelegate = self.transitionManager
    }
    

    你要做的就是创建一个视图控制器,给它一个过渡委托,然后把它扔掉。您不执行任何转换!但这正是 segue 的工作。目前尚不清楚您可能期望发生什么。

    如果想法是这应该是一个现在(模态)segue,那么你应该在故事板中使它成为一个现在(模态)segue,指定你的自定义 segue 类,然后,在您的perform 实现中,调用super 进行实际演示:

    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
    }
    

    或者,您的perform 可以自己执行演示,方法是在源视图控制器上调用presentViewController:...,并将目标视图控制器作为参数。

    但是你的 perform 什么都不做。什么都不会产生。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-21
      • 1970-01-01
      • 1970-01-01
      • 2014-10-28
      相关资源
      最近更新 更多