如何选择&在UITableview中加载后勾选该行

时间:2011-08-05 08:35:44

标签: iphone objective-c ios xcode uitableview

我有一个选择,只会选择一行类别。 但我希望它能在加载时选择Spirits行。

这样的事情:

enter image description here

目前没有选择任何内容:

enter image description here

我应该在哪里进行比较,以使其为selectRowAtIndexPath

//自定义表格视图单元格的外观。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
    }


    categoryString = [arrayCategory objectAtIndex:indexPath.row];
    cell.textLabel.text = categoryString;
    if (cell.textLabel.text == categoryString) {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
    }
    else {
        cell.accessoryType = UITableViewCellAccessoryNone;

    }

    return cell;

}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    UITableViewCell* newCell = [tableView cellForRowAtIndexPath:indexPath];
    int newRow = [indexPath row];
    int oldRow = (lastIndexPath != nil) ? [lastIndexPath row] : -1;

    if(newRow != oldRow)
    {
        newCell.accessoryType = UITableViewCellAccessoryCheckmark;
        newCell.highlighted =YES;
        UITableViewCell* oldCell = [tableView cellForRowAtIndexPath:lastIndexPath];
        oldCell.accessoryType = UITableViewCellAccessoryNone;
        lastIndexPath = indexPath;
        oldCell.highlighted = NO;

    }
    [tableView deselectRowAtIndexPath:(NSIndexPath *)indexPath animated:YES];
}

2 个答案:

答案 0 :(得分:1)

使用 selectRowAtIndexPath:animated:scrollPosition:方法以编程方式选择行。

您的代码中几乎无法解决问题。您应该使用isEqualToString:方法来匹配字符串,例如if ([cell.textLabel.text isEqualToString:categoryString]) {。接下来就是,您要将categoryString分配给cell.textLabel.text,并在下一行匹配它们,因此它始终会返回YES。我认为你匹配错误的值。

答案 1 :(得分:0)

您必须手动设置多个复选标记。为此你可以为每个UITableViewCell使用UIImageview,并且根据存储的旧数据,你必须在 didSelectRowAtIndexPath (UITableView的委托方法)中设置复选标记。