Swift - UIStoryboardSegue 以编程方式弹出 ViewController

Swift - UIStoryboardSegue pop up ViewController programatically

我以编程方式将 UIButton 附加到 navigationBar:

catButton.addTarget(self, action: "oc:", forControlEvents: .TouchUpInside)
var catBarButton:UIBarButtonItem = UIBarButtonItem(customView: catButton)
self.navigationItem.setRightBarButtonItem(catBarButton, animated: false)

当函数 oc() 被触发时,我想弹出视图控制器

let segue = UIStoryboardSegue(identifier: "oc", source: self, destination: MDComDBCatsTVC())
prepareForSegue(segue, sender: but)

但这不会打开 MDComDBCatsTVC.. 如何以编程方式执行此操作,因为我无法从情节提要中的按钮拖动,因为我的按钮是以编程方式添加的

你可以像那样使用动态弹出视图

 let vc = storyboard.instantiateViewControllerWithIdentifier("myPopupView") as! myPopupViewViewController

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

如果您想通过故事板执行此操作,请将故事板中的视图控制器与 segue 连接(从第一个视图控制器拖动到第二个视图控制器,这并不意味着仅从按钮拖动)命名该 segue "oc"然后在按钮操作中执行 segue,如下所示

performSegueWithIdentifier("oc", sender: but)

I can't drag from button in my storyboard because my button is added programatically

您可以通过从视图控制器图标拖动到目标视图控制器来在故事板中创建转场。然后可以通过编程方式使用此 segue。

单击 segue 以在“属性”检查器面板中分配一个标识符。然后可以使用此标识符以编程方式访问 segue。

Xcode 将坚持 popover segues 有一个锚点。错误信息是“Popover segue with no anchor”。这可以在属性检查器中解决——锚 属性。从圆圈拖动到您的视图。

在您以编程方式创建的按钮的操作中,您将能够使用例如:

访问 segue
func buttonAction(sender:UIButton!)
{
    performSegueWithIdentifier("popoversegue", sender: self)
}

( ... 或者更可能使用 if let 等更强大的东西)