我有一个包含2个部分的动态表视图,每个部分用4个数组填充。
目前只检查一个单元格,目前都没有。
我知道要检查的单元格的文本。
所以我的问题是,我可以根据单元格包含的文本为单元格设置accessoryType吗?
如IF cell.textLabel.text等于THIS,然后设置该单元的accessoryType检查。
任何帮助都会很棒。
我到目前为止的代码,考虑到下面的评论是这样的:
switch (indexPath.section) {
case standardSection:
serverLoc.textLabel.text = [self.serverSelection objectAtIndex:indexPath.row];
if ([[self.serverSelection objectAtIndex:indexPath.row] rangeOfString:cellValue].location != NSNotFound) {
serverLoc.accessoryType = UITableViewCellAccessoryCheckmark;
}
break;
case qualitySection:
serverLoc.textLabel.text = [self.qServerSelection objectAtIndex:indexPath.row];
if ([[self.qServerSelection objectAtIndex:indexPath.row] rangeOfString:cellValue].location != NSNotFound) {
serverLoc.accessoryType = UITableViewCellAccessoryCheckmark;
}
break;
default:
break;
}
这些部分将它们设置为自己:
第1节:
伊利诺伊州芝加哥市 英国伦敦 加利福尼亚州圣何塞 华盛顿特区
第2节:
伊利诺伊州芝加哥(Q) 英国伦敦(Q) 加利福尼亚州圣何塞(Q) 华盛顿特区(Q)
正如您所看到的,我正在检查CellValue的值。使用上一个视图中的委托设置CellValue。
让我们说这个时间等于英国伦敦。当我进入这个视图时,伦敦,英国和伦敦,英国(Q)被检查,我只想要没有(Q)检查的那个。即使使用“isEqualToString”也会发生这种情况。如果cellValue等于伦敦,英国(Q)则可行。
答案 0 :(得分:2)
在cellForRowAtIndexPath
中执行此操作。创建单元格后,只需检查数组中的值(假设数组包含NSStrings)。所以:
if ([[self.myArray objectAtIndex:indexPath.row] isEqualToString:@"the string I want"]) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
编辑: 根据您的评论,所有字符串将以相同的内容开头,但可能有差异。你可以这样做:
if ([[self.myArray objectAtIndex:indexPath.row] rangeOfString:@"London,"].location != NSNotFound) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
如果NSString包含“London”,则表示评估为YES。或者换句话说,NSString包含“伦敦”,
答案 1 :(得分:0)
您应该尝试在创建单元格时设置该值(从您的“模型”而不是查看单元格的标签)。
如果某些情况导致值发生变化,您应该更新模型(创建每个单元格时使用的数据);然后拨打[self.tableview reloadData]
。