【问题标题】:Custom Relationship Segue自定义关系 Segue
【发布时间】:2014-10-15 21:43:33
【问题描述】:

由于无法使用 IBOutlets 连接 Storyboard 中的场景,因此 segues 将是一个很好的方法。

虽然创建自定义转场很容易,但似乎没有办法创建自定义“关系转场”。

是这样吗? 只有Apple可以创建这样的segue(UITabBarControllerviewControllersUINavigationControllerrootController等)?

【问题讨论】:

  • 您可以创建一个自定义 segue 来执行关系 segue 所做的事情,但是当源视图控制器像 Apple 的关系 segues 一样被实例化时,您不能让它自动执行(但是,您可以在该控制器的 viewDidLoad 或 viewDidAppear 方法)。

标签: ios segue uistoryboard


【解决方案1】:

你是对的,你不能创建自定义关系segues。

关系 segue 与其他 segue 的不同之处在于它们在构建时解决。当从情节提要加载 UITabBarController 时,它的所有组成视图控制器都已经在它的“内部”,在表示带有标签栏控制器的场景的同一个 NIB 中。

【讨论】:

    【解决方案2】:

    现在我们真的可以做到了!

    只需创建一个自定义的UIStoryboardSegue 子类,它就会在 Interface Builder 中可用。

    结果与创建“自定义”segue 并将其类设置为您的子类相同。

    来自KWDrawerController 库的示例:

    public class DrawerEmbedRightControllerSegue: UIStoryboardSegue {
    
        final public override func perform() {
            if let sourceViewController = source as? DrawerController {
                sourceViewController.setViewController(destination, for: .right)
            } else {
                assertionFailure("SourceViewController must be DrawerController!")
            }
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2011-12-24
      • 1970-01-01
      • 1970-01-01
      • 2013-11-23
      • 2023-03-07
      • 2012-06-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多