如何以编程方式更改 segue 类型?

Posted

技术标签:

【中文标题】如何以编程方式更改 segue 类型?【英文标题】:How to change segue kind programmatically? 【发布时间】:2016-03-04 14:45:40 【问题描述】:

如何以编程方式更改在情节提要中创建的转场类型?

我想根据设备类型更改 segue 类型。对于.phone,应该执行类型为“show”(推送)的故事板segue。对于.pad,我想将 segue 类型更改为“modal”。

我应该在prepareForSegue 中执行此操作,还是必须停止在shouldPerformSegueWithIdentifier 中执行转场并手动执行模态转场?

编辑:这个问题的重点是改变 segue 类型,而不是如何识别设备类型。

【问题讨论】:

你找到答案了吗? 【参考方案1】:

试试这个:

enum UIUserInterfaceIdiom : Int 
    case Unspecified
    case Phone // iPhone and iPod touch style UI
    case Pad // iPad style UI

viewDidLoad()

    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let vc = storyboard.instantiateViewControllerWithIdentifier("vc2") as! myViewController

    switch UIDevice.currentDevice().userInterfaceIdiom 

    case .Phone:
      self.presentViewController(vc, animated: true, completion: nil)
        break

    case .Pad:
      self.showViewController(vc, sender: nil)
        break
    case .Unspecified:
        // Do something
        break
    default:
       // Do something
    

【讨论】:

谢谢 Led,我知道如何识别设备类型。我想知道如何改变segue。也许我的帖子中没有说清楚,我会更新它。 @Manuel 你可能对 presentViewController() 和 showViewController() 函数感兴趣

以上是关于如何以编程方式更改 segue 类型?的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式执行Unwind segue?

如何以编程方式从 TableView 执行 segue

如何创建可以从以编程方式创建的按钮调用的 segue?

如何以编程方式从 SKScene 到 UIViewController 执行成功的 segue

如何以编程方式在 PageViewController 的 UIViewController 中使用 segue

如何使用 Swift 在 iOS 中以编程方式进行 segue