【问题标题】:How can I get the UIButton state to be different for each selected tableView row?如何使每个选定的 tableView 行的 UIButton 状态不同?
【发布时间】:2017-09-02 11:19:16
【问题描述】:

在这段代码中,我的按钮有一个选中状态和取消选中状态。按下按钮后变为绿色,再次按下时变为红色,表示取消选中状态。

但是,所有这些都在 DetailViewController 中,当我从 tableView 中选择特定行然后单击按钮以显示绿色并返回并尝试不同的行时,按钮在另一行上显示为绿色,这表示我'已经按下它(我没有)。我想知道是否有办法只为我选择的行的 detailView 显示绿色,而为其他行显示红色?

 let defaults = UserDefaults.standard

// Outlets
@IBOutlet weak var goingButton: UIButton!

// Actions
@IBAction func goingButtonTapped(_ sender: UIButton) {

goingButton.isSelected = !goingButton.isSelected

if goingButton.isSelected == true {
    goingButton.setImage(UIImage(named: "goingSelected"), for: UIControlState.selected)
    defaults.set(true, forKey: "going")
    defaults.synchronize()
    defaults.bool(forKey: "going")
    print("defaults: \(defaults)")
} else if goingButton.isSelected == false {
    goingButton.setImage(UIImage(named: "goingDeselected"), for: UIControlState.normal)
    defaults.set(false, forKey: "going")
    defaults.synchronize()
    defaults.bool(forKey: "going")

    }
}

override func viewDidLoad() {
super.viewDidLoad()

goingButton.setImage(UIImage(named: "goingDeselected"), for: UIControlState.normal)
if defaults.bool(forKey: "going")
{
    goingButton.isSelected = true
goingButton.setImage(UIImage(named: "goingSelected"), for: UIControlState.selected)

}
}

【问题讨论】:

标签: ios swift uitableview uibutton


【解决方案1】:

这个问题是因为按钮识别defaultsUserDefaults属性来设置self如何显示,当你第一次点击按钮时defaults设置为true,而当你返回时按钮仍然绿色(@ 987654323@还是真的)

试试这个:

func viewWillAppear(_ animated: Bool) {
    UserDefaults.standard.set(false, forKey: "going")
}

【讨论】:

    【解决方案2】:

    如果您有静态行,则需要为每行设置一个用户默认键,以保留会话之间的按钮状态。如果你有很多行,在你的代码中使用 Core Data 会更容易和更清晰。

    如果您的行是动态的,并且您只需为单个应用会话保存按钮状态,请使用将行作为键并将布尔值作为值的字典。每次重新加载表格时,从字典中获取每一行按钮的状态。

    var buttonStates: [Int:Bool]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-24
      • 2021-04-16
      • 2015-07-07
      相关资源
      最近更新 更多