我是初学者。当按下按钮时,我正在进行弹出,然后实例化另一个视图控制器,用户可以从中选择5个选项。我希望能够从第一个视图控制器(下面的代码片段来自)保存按钮的sender.tag并将其传递给第二个,我可以将它们一起保存到Parse。我没有使用segue,所以我无法通过它。提前谢谢!
func showPopover(sender: UIButton) {
let vc = self.storyboard?.instantiateViewControllerWithIdentifier("SelectionViewController")
vc!.modalPresentationStyle = .Popover
vc!.preferredContentSize = CGSizeMake(150, 30)
if let presentationController = vc!.popoverPresentationController {
presentationController.delegate = self
presentationController.permittedArrowDirections = .Up
presentationController.sourceView = self.view
presentationController.sourceRect = sender.frame
self.presentViewController(vc!, animated: true, completion: nil)
}
}
答案 0 :(得分:0)
最简单的方法是在任一视图控制器类之外声明变量var myVariable = Int()
。然后,在主VC内部,在实例化弹出窗口之前,将标记保存到变量中。你可以在popover中使用它。
答案 1 :(得分:0)
你可以使用segue(为什么不是你?)
您将标签的属性放在popover中,并将其设置在第一个视图控制器中,位于
中 func prepareForSegue(_ segue: NSStoryboardSegue, sender sender: AnyObject?)
。
要执行segue,只需使用
即可 func performSegueWithIdentifier(_ identifier: String, sender sender: AnyObject?)
,在你的功能中
func showPopover(sender: UIButton)
答案 2 :(得分:0)
如果你不想使用segue,你只需将你从 func showPopover(sender: UIButton) {
guard let vc = self.storyboard?.instantiateViewControllerWithIdentifier("SelectionViewController") as? MYViewController
} else {
print("This is not the view controller you were looking for..."
return
}
vc.myVariableName = sender.tag
...
}
获得的控制器转换为你的子类。
Swift 2.0
n1