选择行时,TableView返回null(0)

时间:2011-01-17 16:49:31

标签: objective-c ipad uitableview

我有一个TableView控件,我已对其进行了分区/分组。但是,这已经破坏了确定我在表中选择的项目的代码。

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

    /*
     When a row is selected, set the detail view controller's detail item to the item associated with the selected row.
     */
    //detailViewController.detailItem = [NSString stringWithFormat:@"Row %d", indexPath.row];
    if (_delegate != nil) {
        Condition *condition = (Condition *) [_conditions objectAtIndex:indexPath.row];
        [_delegate conditionSelectionChanged:condition];
    }
}

我的样本数据目前有6个部分,第一部分包含两个项目,其余部分包含一个。如果我在第一部分中选择第二项,则详细信息视图会更新,任何其他选择始终显示第一部分中的第一项(项目0)。

我假设这是因为indexPath.row为其他部分返回0,因为它是该部分中的第一个项目,然后导致我的数组中的第一个对象被选中。

如何修复代码以确保选择正确的项目?除此之外,其他一切都很好。

的cellForRowAtIndexPath

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

    static NSString *CellIdentifier = @"CellIdentifier";

    // Dequeue or create a cell of the appropriate type.
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
        cell.accessoryType = UITableViewCellAccessoryNone;
    }

    //get the letter in the current section
    NSString *alphabet = [conditionIndex objectAtIndex:[indexPath section]];

    //get all conditions beginning with the letter
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name beginswith[c] %@", alphabet];
    NSArray *conditionsGrouped = [_conditions filteredArrayUsingPredicate:predicate];

    if ([conditionsGrouped count] > 0) {
        Condition *condition = [conditionsGrouped objectAtIndex:indexPath.row];
        cell.textLabel.text = condition.name;
    }

    return cell;
}

2 个答案:

答案 0 :(得分:1)

你也应该考虑indexPath.section。

您应该创建一个二维_conditions数组,按部分索引,然后按行索引。

答案 1 :(得分:0)

按照这篇文章的回答了解它: UITableView Problem with Sections