在 Swift 3 中更改 tableView 中的图像颜色

Posted

技术标签:

【中文标题】在 Swift 3 中更改 tableView 中的图像颜色【英文标题】:Alter Image color in tableView in Swift 3 【发布时间】:2017-01-11 19:24:21 【问题描述】:

我有一个带有菜单选项的 tableView。在这个菜单选项中,我有图像和标签。

我希望当我单击一个选项时,图标图像会将当前颜色更改为另一种颜色。

var menuNameArr : Array = [String]()
var iconImageNormal : Array = [UIImage]()
var iconImageSelected : Array = [UIImage]()

@IBOutlet weak var imgLogo: UIImageView!

override func viewDidLoad() 
    super.viewDidLoad()

    menuNameArr = ["Menu", "Map", "Favorites", "Orders", "Settings", "Help"]
    iconImageNormal = [UIImage(named: "icon-coffee-cup-gray")!, UIImage(named: "icon-placeholder-gray")!,
                       UIImage(named: "icon-star-gray")!, UIImage(named: "icon-shopping-cart-gray")!,
                       UIImage(named: "icon-settings-gray")!, UIImage(named: "icon-help-gray")!]
    iconImageSelected = [UIImage(named: "icon-coffee-cup-green")!, UIImage(named: "icon-placeholder-green")!,
                         UIImage(named: "icon-star-green")!, UIImage(named: "icon-shopping-cart-green")!,
                         UIImage(named: "icon-settings-green")!, UIImage(named: "icon-help-green")!]



override func didReceiveMemoryWarning() 
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.


func numberOfSections(in tableView: UITableView) -> Int 
    // #warning Incomplete implementation, return the number of sections
    return 1


func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    return menuNameArr.count



func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
    let cell = tableView.dequeueReusableCell(withIdentifier: "MenuTableViewCell", for: indexPath) as! MenuTableViewCell

    cell.imgIcon.image = iconImageNormal[indexPath.row]

    cell.lblMenuName.text! = menuNameArr[indexPath.row]
    cell.lblMenuName.textColor = UIColor(colorLiteralRed: 183.0/255.0, green: 183.0/255.0, blue: 183.0/255.0, alpha: 1)

    return cell

有人知道我是怎么做到的吗?

【问题讨论】:

【参考方案1】:

你可以添加tableview的delegate didSelectRowAtIndexPath 。

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
    self.tableView.reloadData()
    if let cell = tableView.cellForRow(at: indexPath) as? MenuTableViewCell 
        cell.imgIcon.image = iconImageSelected[indexPath.row]
    

希望它会起作用。

【讨论】:

谢谢!我使用了@toddg 解决方案,因为我使用的是 swift 3【参考方案2】:

首先,确保您设置了 UITableViewDelegate,然后将以下函数添加到您的类中:

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

    if let cell = tableView.cellForRow(at: indexPath) as? MenuTableViewCell 
        cell.imgIcon.image = iconImageSelected[indexPath.row]
    

【讨论】:

以上是关于在 Swift 3 中更改 tableView 中的图像颜色的主要内容,如果未能解决你的问题,请参考以下文章

Swift - 在 tableView.selectRow 中更改背景颜色

swift中tableView的单元格高度扩展时更改标签文本

Swift 3.0 TableView 单元格按钮

如何在swift 3中删除tableview中特定单元格的按钮

Swift:TableView 控制器和段值更改

Swift 3 和 Firebase - Tableview 未更新