0

我有一个包含 2 个部分的动态表视图,每个部分有 4 行,由数组填充。

应该只检查一个单元格,目前没有。

我知道要检查的单元格的文本。

所以我的问题是,我可以根据单元格包含的文本为单元格设置附件类型吗?

像 IF cell.textLabel.text 等于 THIS 然后设置该单元格附件类型检查。

任何帮助都会很棒。

编辑 编辑 编辑 编辑

我到目前为止的代码,考虑到下面的评论是这样的:

  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),则此方法有效。

4

2 回答 2

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 包含“London”,

于 2013-02-01T01:07:29.853 回答
0

您应该在创建单元格时尝试设置该值(从“模型”而不是通过查看单元格的标签)。

如果某些情况导致值发生变化,则应更新模型(创建每个单元格时使用的数据);然后打电话[self.tableview reloadData]

于 2013-02-01T00:59:06.937 回答