gpt4 book ai didi

ios - 更改 SelectedRow 上的 UILabel

转载 作者:行者123 更新时间:2023-11-28 08:26:21 32 4
gpt4 key购买 nike

我正在尝试更改所选 tableView 中单元格的标签颜色。我试图通过以下代码实现这一点:

TextLabel.HighlightedTextColor = UIColor.White;

不幸的是,这不起作用,并且会保留我从 StoryBoard 中填充的他的原始颜色。

我将提供完整代码的图片。蓝色背景颜色有效,但标签颜色无效。

enter image description here

编辑

我正在尝试根据某行是否被选中来更改按钮状态。 When a row is selected I would like to show a button on the bottom (outside of the tableView) to be shown (isEnabled = true) when I have no rows selected I want it to be set to disabled (isEnabled = false. How can我处理得最好?

目前我有以下逻辑,但这将导致崩溃并显示错误代码:Thread 1: EXC_BREAKPOINT (code=1, subcode=0x100044e70)

当我选择一行并取消选择同一行时,应用程序将崩溃。

代码:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

let selectedCell = tableView.cellForRow(at: indexPath)
selectedCell?.contentView.backgroundColor = UIColor(red: 84.0 / 255, green: 199.0 / 255, blue: 252.0 / 255, alpha: 1)
self.checkButtonAvailability()
}

func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
let selectedCell = tableView.cellForRow(at: indexPath)
selectedCell?.textLabel?.textColor = UIColor.darkGray
self.checkButtonAvailability()
}
@IBAction func nextBtnPressed(_ sender: AnyObject) {
}

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 50
}

func checkButtonAvailability() {
if (self.tableView.indexPathsForSelectedRows?.count)! > 0 {
nextBtn.isEnabled = true
nextBtn.backgroundColor = UIColor(red: 84.0 / 255, green: 199.0 / 255, blue: 252.0 / 255, alpha: 1)
} else {
nextBtn.isEnabled = false
nextBtn.backgroundColor = UIColor.darkGray
}
}

最佳答案

子类化您的 UITableViewCell 并将其设置在那里:

class YourTableViewCell: UITableViewCell
{

@IBOutlet weak var myLabel: UILabel!

override func setSelected(_ selected: Bool, animated: Bool) {
if(selected) {
self.myLabel.textColor = UIColor.white
} else {
self.myLabel.textColor = UIColor(red: 84.0/255.0, green: 199.0/255.0, 252.0/255.0)
}
}
}

那么您的 cellForRow 方法可能如下所示:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

let cell = ... as! YourTableViewCell

...
/// you don't need to set the highlight color here.
}

如果您想跟踪按钮的可用性,请像这样使用 Bool 公共(public)变量(在方法之外):

var someRowSelected = false

然后实现某种检查方法:

func checkButtonAvailability() {
if self.tableView.indexPathsForSelectedRows?.count > 0 {
myButton.isEnabled = true
} else {
myButton.isEnabled = false
}
}

然后在您的 didSelectRowdidDeselectRow 委托(delegate)方法中您可以调用该方法:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
self.checkButtonAvailability()
}

func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
self.checkButtonAvailability()
}

关于ios - 更改 SelectedRow 上的 UILabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39855999/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com