如何在实例化另一个视图控制器时传递数据

时间:2015-09-30 00:59:19

标签: ios swift

我是初学者。当按下按钮时,我正在进行弹出,然后实例化另一个视图控制器,用户可以从中选择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)
      }
   }

3 个答案:

答案 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