2017-05-28 15 views
0

这是另一个关于stackoverflow最流行的问题之一版本。抱歉。谢谢。如何将数据从同一个按钮传递给多个视图控制器

我有一个viewcontroller有30个按钮。这些按钮中的每一个都可以基于从前一个视图控制器发送的变量而变为20个视图控制器中的一个。我知道如何将数据从一个viewcontroller发送到另一个,我知道如何有一个按钮连接到多个viewcontrollers依赖于传递的变量,但我不知道如何将一个变量从一个按钮传递给任何视图 - 控制从变量指定...

我的视图控制器看起来是这样的:

@IBAction func didTapButton(_ sender: UIButton) { 
    if passedvariable == "A" { 
     performSegue(withIdentifier: "ToA", sender: self) 
    if passedvariable == "B" { 
     performSegue(withIdentifier: "ToB", sender: self) 
    } 

我尝试添加这样的事情...

@IBAction func didTapButton(_ sender: UIButton) { 
    if passedvariable == "A" { 
     performSegue(withIdentifier: "ToA", sender: self)  
      let send = segue.destination as! AViewController 
      send.NewVariableToSend = (sender as! UIButton).title(for: .normal)!} 
    } 

但是这不起作用......我觉得我很接近但还不能连接点。任何帮助非常感谢,谢谢!

回答

1

如何从UIButton的IBAction方法访问实际的segue? 这种方法是错误的。使用PrepareForSegue方法将您的数据传递给下一个ViewController。它是一种预定义的方法,所以您只需在ViewController类中覆盖此方法。

试试这个.. 注: guard let用来摆脱崩溃的,如果你想任何零值传递给你的下一个ViewController

@IBAction func didTapButton (_ sender: Any) { 
     //First get the clickedButton Object if you do not have IBOutlet of that button 
     guard let clickedButton = sender as? UIButton else {return} 
     //Pass the clicked button to Segue perform as a sender 
     self.performSegue(withIdentifier: "yourSegueIdentifier", sender: clickedButton) 

    } 
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     if segue.identifier == "yourSegueIdentifier" { 
      //Now get you destination viewcontroller and type cast it into your desired ViewController class 
      guard let nextVC = segue.destination as? YourViewController else {return} 
      //Now convert the sender into your clicked button because you have previously set the clickedButton as sender when you try to perform this segue 
      guard let clickedButton = sender as? UIButton else {return} 
      //Now Simply assign this to nextVC 
      nextVC.button = clickedButton 
     } 

    } 
+0

感谢您的回复!还是肯定搞清楚了......如何获得clickedButton对象? – tfcamp

+0

在你IBAction的按钮点击有一个参数与名称发件人。这将自动带来点击的按钮。 –

相关问题