gpt4 book ai didi

ios - 突出显示 UITableViewCell TextLabel 文本颜色

转载 作者:行者123 更新时间:2023-11-28 06:52:07 26 4
gpt4 key购买 nike

我在我的项目中使用了一个 popover tableview。我想在选择时将 tableview 单元格的文本颜色从灰色更改为红色。而且我还希望在下次像左侧菜单选择一样加载弹出窗口时突出显示的颜色保持红色。需要帮助才能做到这一点。我已经提供了 popover tableview 的代码。

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
if tableView === tableViewPopOver {
let cell = UITableViewCell(style: .Default, reuseIdentifier: nil)
cell.textLabel?.text = FeedFilter.allValues[indexPath.row].rawValue
if indexSelected == indexPath.row {
cell.textLabel?.textColor = UIColor.redColor()
} else {
cell.textLabel?.textColor = UIColor.lightGrayColor()
}

//cell.selectionStyle = .None
return cell
}


let cell = tableView.dequeueReusableCellWithIdentifier(kDreamFeedTableViewCell, forIndexPath: indexPath) as! DreamFeedTableViewCell
cell.selectionStyle = .None

let dream = self.arrayDreams[indexPath.row]
cell.dream = dream
return cell
}

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
if tableView === tableViewPopOver {
//tableViewPopOver?.cellForRowAtIndexPath(indexPath)?.textLabel?.highlightedTextColor = UIColor.redColor()
//selectedIndexPath = indexPath.row

let cell = tableView.cellForRowAtIndexPath(NSIndexPath.init(forRow: indexSelected, inSection: 0))
cell?.textLabel?.textColor = UIColor.lightGrayColor()
let cell2 = tableView.cellForRowAtIndexPath(indexPath)
cell2?.textLabel?.textColor = UIColor.redColor()
tableView.deselectRowAtIndexPath(indexPath, animated: true)
indexSelected = indexPath.row

self.popover.dismiss()
NRLoader.showLoader()
self.searchDreams(true)
}

else { // dream feed tableview

tableView .deselectRowAtIndexPath(indexPath, animated: false)
let dream = self.arrayDreams[indexPath.row]

if !isValidUser(dream.user) {
return
}

if isCurrentUser(dream.user)
{
self.pushToUserDreamViewControllerForDream(dream)
}
else
{
tableView .deselectRowAtIndexPath(indexPath, animated: false)
self.pushToFeedDetailViewControllerForDream(dream)
}

}
}

最佳答案

我发现您的代码存在与 tableViewPopOver 相关的问题。如果您将选择样式设置为 .None。您无法选择单元格。

对于你的问题,我可以为你推荐两种解决方法:

  1. 如果您想使用 cell.textLabel?.highlightedTextColor,您将面临一个问题:单元格的背景将是灰色或蓝色,具体取决于您选择的样式选择。如果你能接受的话。你可以这样实现:

    您创建一个变量来保存选定的单元格。也许它是 int 值,如 var indexSelected = 3。当您实现 cellForRowAtIndexPath 时,您应该这样实现:

    cell.textLabel?.text = FeedFilter.allValues[indexPath.row].rawValue
    cell.textLabel?.highlightedTextColor = UIColor.redColor()
    if indexPath.row == indexSelected {
    tableView.selectRowAtIndexPath(indexPath, animated:true, scrollPosition: .None)
    }
    return cell

    然后在 didSelectRowAtIndexPath 中更新 indexSelected:

    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

    indexSelected = indexPath.row //update selected row
    }
  2. 如果您不希望单元格背景改变颜色。你可以选择这种方式。您应该像上面的方法一样创建变量。但是在 cellForRowAtIndexPath 中你应该实现:

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCellWithIdentifier("Cell")//init cell it depend on your way create cell
    cell?.textLabel?.text = "Your text"

    if indexSelected == indexPath.row {
    cell?.textLabel?.textColor = UIColor.redColor()
    } else {
    cell?.textLabel?.textColor = UIColor.lightGrayColor()
    }


    return cell!
    }

didSelectCellAtIndexPath 中你应该实现:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let cell = tableView.cellForRowAtIndexPath(NSIndexPath.init(forRow: indexSelected, inSection: 0))
cell?.textLabel?.textColor = UIColor.lightGrayColor()
let cell2 = tableView.cellForRowAtIndexPath(indexPath)
cell2?.textLabel?.textColor = UIColor.redColor()
tableView.deselectRowAtIndexPath(indexPath, animated: true)
indexSelected = indexPath.row //update selected row
}

此处演示:Demo

希望对您有所帮助!

关于ios - 突出显示 UITableViewCell TextLabel 文本颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34594404/

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