我对iOS和Swift开发很新,但到目前为止我很喜欢它。
我有一个可滚动的tableview,它包含一些由自定义结构数组填充的单元格。
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("platformCell", forIndexPath: indexPath) as! PlatformCell
cell.platformName.text = KeyPlatformsViewController.platforms[indexPath.row].platformName
cell.backgroundColor = UIColor(rgba: KeyPlatformsViewController.platforms[indexPath.row].platformColour)
return cell
}
问题是我想在代码中加入这样的东西:
if cell.platformName.text == "A" {
cell.backgroundColor = UIColor.whiteColor();
}
但是对于deque cell(我认为),滚动视图后会出现错误的单元格。
有没有人知道如何确保我选择的那个受到影响?
我希望我很清楚,我认为我没有很好地解释这一点。
答案 0 :(得分:2)
当你根据if语句设置某个单元格中的某个值时,你应该总是包含一个“else”子句来处理其他情况(或者其他情况,在这种情况下你需要一些if-elses)
if KeyPlatformsViewController.platforms[indexPath.row].platformName == "A" {
cell.backgroundColor = UIColor.whiteColor();
}else{
cell.backgroundColor = ... // default color
}
答案 1 :(得分:0)
因为,您希望根据某些数据条件更改文本的颜色,您应该检查或验证数据(在您的情况下是数据源中的文本内容)而不是UI(单元格中设置的文本)。
所以不要检查
if cell.platformName.text == "A"
检查
if KeyPlatformsViewController.platforms[indexPath.row].platformName == "A"
这样,以MVC architecture术语,您的数据(模型)驱动您的UI(视图)。