2013-04-15 28 views
0

我有一個UITableView帶有iPad應用程序中的自定義單元格。當我對UITableView的數據源進行排序時,我點擊UITableView中的一行,該行的詳細數據是錯誤的(我將選定的行數據清空到UITextFields)!如果我不對數組進行排序,那麼細節是正確的!以下是對數據源數組進行排序的代碼:當選擇行時,UITableView數據的排序會返回錯誤的數據

-(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 
} 

爲什麼會發生這種情況?我需要做些什麼來解決它?

+2

顯示'cellForRowAtIndexPath'和'didselectRowAtIndexPath'的代碼 –

回答

4

最有可能您的排序陣列中的數據,並使用排序後的數組中cellForRowAtIndexPath:

然後在didSelectRowAtIndexPath您正在使用的排序的數組去到哪個詳細信息頁面。您應該能夠通過使用didSelectRowAtIndexPath中的排序數組來解決您的問題。

+0

太棒了!那正是問題所在......非常感謝你;對此,我真的非常感激。 – SpokaneDude

1

您選擇了某一行每一次,這個代碼在didSelectRowAtIndexPath重新創建數組再次:

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

您需要執行檢查您的custDataArray是否是零。如果它不是零,那麼你不需要這些線。

1

創建一個ivar來保存你的NSMutableArray。您正在整理數組reloadClientList,但在didSelectRowAtIndexPath中沒有使用相同的陣列。