单个视图控制器的许多按钮

时间:2018-08-08 14:07:22

标签: ios uiviewcontroller popup segue

im正在开发一个利用一个主视图控制器上的许多按钮(可能有20个按钮)的应用程序,这些按钮都可以激活单独视图控制器上弹出窗口中的单个选择器视图。我认为答案不是很多。我应该考虑一种更好的方法吗?

我在想-可以通过任何按钮激活的一种多用途搜索功能,但不知道如何实现。

赞赏任何建议

迈克

1 个答案:

答案 0 :(得分:1)

将所有按钮设置为相同的操作,例如:

@IBAction func keyPressed(_ sender:UIButton){
    // use button title string
    self.keyString = sender.titleLabel?.text as! String
    // or tag
    self.keyTag= sender.tag?

    self.performSegue(withIdentifier: "TheSegue", sender: self)
}

然后,您将要基于发送者的状态来设置要导航到的View Controller。因此,您可以按以下方式覆盖prepare:forSegue方法。

override func prepare(for segue:UIStoryboardSegue, sender:Any?) {

    let destController = segue.destination as! Dest_Controller_Class

    // use tag or keyTitle to set controller attributes
    // before view is shown

    destController.keyTag = self.keyTag
    destController.keyString = self.keyString

}

现在,一旦导航到Dest_Controller_Class,您将在视图控制器中本地按下按钮的属性,并可以根据需要更新视图:

class Dest_Controller_Class: UIViewController {
    var keyString: String?
    var keyTag: Int?
    @IBOutlet weak var label: UILabel!

    override func viewDidLoad() {

        if (keyString != nil) {
            label.text = keyString;
            // or likewise use tag
        } else {
            label.text = "keyString not set"
        }
    }
}