设置选定的单元格而不推送到新的viewController

时间:2015-08-11 15:13:19

标签: ios swift uitableview

我创建了以下代码,以便在选择和取消选择单元格时更改textColor。然而问题是当加载视图时,所有titleLabel都是灰色的,我想要选择第一个单元格。但是,我似乎无法找到如何?我试过将第一个单元格设置为另一种颜色但是当我选择另一个单元格时它不会变为灰色。我怎样才能做到这一点?

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

     var cell = tableView.cellForRowAtIndexPath(indexPath) as! MenuViewCell

        cell.titleLabel?.textColor = UIColor(rgba: "#E91E63")

}


override func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {

        var cell = tableView.cellForRowAtIndexPath(indexPath) as! MenuViewCell
        cell.titleLabel?.textColor = UIColor.whiteColor()

}

2 个答案:

答案 0 :(得分:1)

您可以创建另一个函数并在didSelectRowAtIndexPath方法中编写您想要执行的更改。对于前。

func applySelectionChangesToCell(cell:UITableViewCell) {
     cell.textLabel?.textColor = UIColor.redColor()
}

现在,您可以在didSelectRowAtIndexPath方法和viewDidAppear /表重新加载后调用此函数。

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
     var cell = tableView.cellForRowAtIndexPath(indexPath)
     applySelectionChangesToCell(cell!)
}

override func viewDidAppear(animated: Bool) {
     super.viewDidAppear(animated)
     let indexPath = NSIndexPath(forRow: 0, inSection: 0)
     let cell = self.tableView.cellForRowAtIndexPath(indexPath)

     if let cell = cell {
          self.tableView.selectRowAtIndexPath(indexPath, animated: true, scrollPosition: UITableViewScrollPosition.None)
          applySelectionChangesToCell(cell)
     }
}

答案 1 :(得分:0)

选择第一个单元格,假设至少存在一个单元格

 override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)
    let indexPath = NSIndexPath(forRow: 0, inSection: 0)
    self.tableView.cellForRowAtIndexPath(indexPath)?.setSelected(true, animated: true)
}