Objective-c基于细胞文本设置细胞辅助类型? iOS SDK

时间:2013-02-01 00:52:27

标签: objective-c ios6 cell textlabel accessorytype

我有一个包含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)则可行。

2 个答案:

答案 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]