Ios 选择行时,排序UITableView数据返回错误的数据

Ios 选择行时,排序UITableView数据返回错误的数据,ios,objective-c,uitableview,Ios,Objective C,Uitableview,我有一个iPad应用程序中带有自定义单元格的UITableView。当我对作为该UITableView数据源的数组进行排序,并单击UITableView中的一行时,该行的详细数据是错误的(我将所选行数据清空到UITextFields)!如果我没有对数组排序,那么细节是正确的!以下是对数据源数组进行排序的代码: -(void) reloadClientList: (BOOL *)dontDeleteKey { custDataArray = [NSMutableArray new];

我有一个iPad应用程序中带有自定义单元格的
UITableView
。当我对作为该
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
}

为什么会发生这种情况?我需要做些什么来修复它?

最有可能是您将数据排序到一个数组中,并在
cellForRowAtIndexPath:


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

中的排序数组来解决问题,最有可能的方法是在数组中对数据进行排序,并在
cellForRowAtIndexPath:


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

中的排序数组解决问题每次选择一行时,
didSelectRowAtIndexPath
中的此代码将再次重新创建数组:

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

您需要检查custDataArray是否为零。如果不是nil,则不需要这些行。

每次选择行时,
didSelectRowAtIndexPath
中的此代码将再次重新创建数组:

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

您需要检查custDataArray是否为零。如果不是nil,则不需要这些行。

创建一个ivar来保存NSMutableArray。您正在对数组进行排序
reloadClientList
,但在
didSelectRowAtIndexPath
中没有使用相同的数组创建一个ivar来保存NSMutableArray。您正在对数组进行排序
reloadClientList
,但在
didSelectRowAtIndexPath
didSelectRowAtIndexPath
中没有使用相同的数组!这正是问题所在。。。多谢各位,;我真的很感激。太棒了!这正是问题所在。。。多谢各位,;我真的很感激。