Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 按钮状态信息_Ios_Swift_Swift3 - Fatal编程技术网

Ios 按钮状态信息

Ios 按钮状态信息,ios,swift,swift3,Ios,Swift,Swift3,这个问题类似于“如何从不同的viewController传递数据”,但在这种情况下,我需要另一个信息,我知道如何将数据从一个viewController传递到另一个viewController,但我不知道如何告诉第二个viewController第一个视图中对象的特定状态。在我的例子中,我在第一个视图中有一些按钮 button.isHidden = true 点击后,我想告诉第二个viewController哪些按钮被点击,也许我必须创建一个代表按钮状态的变量,但我不知道怎么做,有人能帮我吗

这个问题类似于“如何从不同的viewController传递数据”,但在这种情况下,我需要另一个信息,我知道如何将数据从一个viewController传递到另一个viewController,但我不知道如何告诉第二个viewController第一个视图中对象的特定状态。在我的例子中,我在第一个视图中有一些按钮

button.isHidden = true 
点击后,我想告诉第二个viewController哪些按钮被点击,也许我必须创建一个代表按钮状态的变量,但我不知道怎么做,有人能帮我吗

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "goToLast" {

            guard let vc = segue.destination as? FinalClass else { return }

            let guest = segue.destination as! FinalClass

            if let user = sender as? User {


            }
        }
    }
其中用户可以是

 struct User {

    var button1 = Button1 tapped
    var button2 = Button2 tapped
    ecc.

    }

假设您有两个视图控制器-
FirstViewController
SecondViewController

所以首先

让我们在
FirstViewController
SecondViewController
中声明两个数组,类似于-

var tappedButtonsArray = NSMutableArray() // In 'FirstViewController'
           AND
var previousViewTappedButtonsArray = NSMutableArray() // In 'SecondViewController'
这是我在
FirstViewController
-

@IBAction func btnTapped(_ sender: UIButton) { // Single action for all buttons


    if (tappedButtonsArray.contains(sender)){ 

        tappedButtonsArray.remove(sender) // Remove previous tapped button on unselect
    }
    else{

        tappedButtonsArray.add(sender) // Add tapped button on select
    }


}
下面是您的执行顺序方法:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "goToLast" {

        guard let secondViewController = segue.destination as? SecondViewController else { return }

        secondViewController.previousViewTappedButtonsArray = tappedButtonsArray
    }
}

我已经完成了一个没有任何模型的简单数组概念,这样您就可以理解下面的内容。我希望它能帮助您从开始。

假设您有两个视图控制器-
FirstViewController
SecondViewController

所以首先

让我们在
FirstViewController
SecondViewController
中声明两个数组,类似于-

var tappedButtonsArray = NSMutableArray() // In 'FirstViewController'
           AND
var previousViewTappedButtonsArray = NSMutableArray() // In 'SecondViewController'
这是我在
FirstViewController
-

@IBAction func btnTapped(_ sender: UIButton) { // Single action for all buttons


    if (tappedButtonsArray.contains(sender)){ 

        tappedButtonsArray.remove(sender) // Remove previous tapped button on unselect
    }
    else{

        tappedButtonsArray.add(sender) // Add tapped button on select
    }


}
下面是您的执行顺序方法:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "goToLast" {

        guard let secondViewController = segue.destination as? SecondViewController else { return }

        secondViewController.previousViewTappedButtonsArray = tappedButtonsArray
    }
}

我已经完成了一个没有任何模型的简单数组概念,这样您就可以理解下面的内容。我希望它能帮助您从开始。

SecondViewController
中声明一个数组,并添加
点击按钮
,这样当您打印数组时,您将只得到点击按钮及其状态。@AmirKhan点击按钮是例如button1.isHidden=true,我如何在数组中声明它?如果你能举例说明你已经做了什么?您是如何将
FirstViewController
推送到
SecondViewController
的?添加一些代码片段,以便我可以添加一些示例。:)@AmirKhan好的,我编辑了这个问题,我不知道如何继续。你已经点击了
用户
模型中的按钮了吗?在按下
SecondViewController
之前,请在
SecondViewController
中声明一个数组,并添加
点击按钮
,这样当您打印数组时,您将只得到点击按钮及其状态。@AmirKhan点击按钮是例如button1.ishiden=true,我如何在数组中声明它?如果你能举例说明你已经做了什么?您是如何将
FirstViewController
推送到
SecondViewController
的?添加一些代码片段,以便我可以添加一些示例。:)@AmirKhan好的,我编辑了这个问题,我不知道如何继续。你已经点击了
用户
模型中的按钮了吗?在推到第二视图控制器之前?