Swift - UIStoryboardSegue以编程方式弹出ViewController

时间:2015-06-02 13:13:54

标签: swift popup storyboard segue

我以编程方式将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 ..如何以编程方式执行此操作,因为我无法从我的故事板中的按钮拖动,因为我的按钮是以编程方式添加的

3 个答案:

答案 0 :(得分:4)

  

我无法从故事板中的按钮拖动,因为我的按钮是以编程方式添加的

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

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

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

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

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

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

Attributes inspector

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:0)

如果你想通过故事板进行操作,请将故事板中的视图控制器与segue连接(从第一个视图控制器拖动到第二个视图控制器,这并不意味着只从按钮拖动)名称“seg”然后在按钮动作中按照以下方式执行segue

performSegueWithIdentifier("oc", sender: but)