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

Posted

技术标签:

【中文标题】单个视图控制器的许多按钮【英文标题】:Many buttons to a single view controller 【发布时间】:2018-08-08 14:07:21 【问题描述】:

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

我在想——某种可以通过任何按钮激活的多用途转场,但不知道这是如何完成的。

感谢任何建议

迈克

【问题讨论】:

创建一个动作方法并连接到它。在该方法中,使用任何一种设置初始化单独的视图控制器。 【参考方案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)

然后你会想要根据发送者的状态来设置你要导航到的视图控制器。因此,您将覆盖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"
        
    

【讨论】:

以上是关于单个视图控制器的许多按钮的主要内容,如果未能解决你的问题,请参考以下文章

在单个视图控制器中使用多个 nib 文件?

对于具有不同类型控件的单个视图,我是不是需要多个控制器?

关闭所有打开的视图控制器的单个函数

多个容器视图 VS 链接到单个容器视图的多个视图控制器

如何将情节提要中的多个按钮连接到单个动作?

许多不同视图控制器中的单元格