0

UITableView在 iPad 应用程序中有一个自定义单元格。当我对作为该数据源的数组进行排序UITableView,然后单击 中的一行时UITableView,该行的详细数据是错误的(我将选定的行数据清空到 中UITextFields)!如果我不对数组进行排序,那么细节是正确的!这是对数据源数组进行排序的代码:

-(void) reloadClientList: (BOOL *)dontDeleteKey  {

    custDataArray = [NSMutableArray new];  //Init Array to hold TableView Data

    if(boSortClientList.selectedSegmentIndex == 0)  {  //  sort alphabetically
        [custDataArray addObjectsFromArray: [ClientInfo MR_findAllSortedBy:@"aClientLastName" ascending:YES]];
    }
    else if(boSortClientList.selectedSegmentIndex == 1)  {  //  sort by phone number
        [custDataArray addObjectsFromArray: [ClientInfo MR_findAllSortedBy:@"aClientPrimaryPhone" ascending:YES]];
    }
    else  {  //  no sort
        [custDataArray addObjectsFromArray:[ClientInfo MR_findAll]];
    }

    [self.clientList reloadData];

    if(dontDeleteKey == false)
        selectedClientKey = nil;  // clear selectedClientKey
}

为什么会出现这种情况?我需要做什么来修复它?

4

3 回答 3

4

很可能您对数组中的数据进行排序并使用排序后的数组cellForRowAtIndexPath:

然后在didSelectRowAtIndexPath您使用未排序的数组来获取要转到的详细信息页面。您应该能够通过使用didSelectRowAtIndexPath.

于 2013-04-15T18:15:05.393 回答
1

每次选择一行时,此代码都会didSelectRowAtIndexPath再次重新创建数组:

custDataArray = [NSMutableArray new];
[custDataArray addObjectsFromArray:[ClientInfo MR_findAll]];

您需要检查您的 custDataArray 是否为 nil。如果它不是 nil ,那么你不需要这些行。

于 2013-04-15T18:20:30.680 回答
1

创建一个 ivar 来保存你的 NSMutableArray。您正在对数组reloadClientList进行排序,但您没有在didSelectRowAtIndexPath.

于 2013-04-15T18:20:53.087 回答