我在mainstoryboard中有一个UIViewController,它包含一个tableview,它只显示标签,而不是令人兴奋的东西。当我点击其中一个单元格时,它会将我推向detailVC。问题是从这里开始,当我从detailVC回来时,我推动的单元格仍在寻找选择。它看起来很糟糕。我尽我所能尝试了一切。最后,细胞是定制细胞。
P.s。:我必须在这个项目中使用swift 2.3。
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableVieww.dequeueReusableCellWithIdentifier("cellNew", forIndexPath: indexPath) as! AltKategoriNewCell
let data = self.katData[indexPath.row]
cell.textLabelNew?.text = data["CatogryName"] as? String
return cell
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let cell = tableVieww.dequeueReusableCellWithIdentifier("cellNew", forIndexPath: indexPath) as! AltKategoriNewCell
let data = self.katData[indexPath.row]
cell.textLabelNew?.text = data["CatogryName"] as? String
cell.contentView.backgroundColor = UIColor.lightGrayColor()
cell.backgroundColor = UIColor.lightGrayColor()
cell.textLabelNew?.textColor = UIColor.blackColor()
urunlerList.altKatDic = self.katData[indexPath.row]
performSegueWithIdentifier("urunlerList", sender: nil)
}
func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {
let cell = tableVieww.dequeueReusableCellWithIdentifier("cellNew", forIndexPath: indexPath) as! AltKategoriNewCell
cell.contentView.backgroundColor = UIColor.whiteColor()
cell.backgroundColor = UIColor.whiteColor()
cell.textLabelNew?.textColor = UIColor.blackColor()
}
属性
答案 0 :(得分:1)
首先出现的问题是您使用didSelectRowAtIndexPath
和didDeselectRowAtIndexPath
方法将单元格排队。 UITableView
并不指望你那样做。如果您需要在didSelectRowAtIndexPath
中获取单元格,可以询问
let cell = tableView.cellForRow(at: indexPath)
UITableViewCell
有selectedBackgroundView
,而UILabel
有highlightedTextColor
。知道这一点,你可以恰当地设置你的单元格,然后你就不需要在选择/取消选择时修改它的属性,如下所示:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cellNew", forIndexPath: indexPath) as! AltKategoriNewCell
if nil == cell.selectedBackgroundView {
cell.selectedBackgroundView = UIView()
cell.selectedBackgroundView?.backgroundColor = UIColor.lightGrayColor()
}
let data = self.katData[indexPath.row]
cell.textLabelNew?.text = data["CatogryName"] as? String
return cell
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
urunlerList.altKatDic = self.katData[indexPath.row]
performSegueWithIdentifier("urunlerList", sender: nil)
}
有了这个,就可以删除didSelectRowAtIndexPath
和didDeselectRowAtIndexPath
的实施。