2014-02-26 52 views
0

我有JSON文件誰是我放在我的表中的信息。我有一個按鈕用於排序我的數組 我可以對數組進行排序並使用NSLog進行打印。我如何根據我的排序數組更新我的表?更新基於陣列的UITableView

這是我的代碼:

-(void)sortArry:(UIButton *)sender 
{ 

    NSSortDescriptor *ageDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES]; 
    NSArray *sortDescriptors = @[ageDescriptor]; 
    NSArray *sortedArray = [tableData sortedArrayUsingDescriptors:sortDescriptors]; 

    //here i have my data in nslog 
    NSLog(@"%@ sort test",sortedArray); 
} 

我怎麼能顯示我sortedArray在表中?

我也用

[self.tableView reloadData]; 

排序之後,但它並沒有顯示該排序表中

更新:

這裏是我的cellForRowAtIndexPath

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath 
    *)indexPath 
{ 
static NSString *CellIdentifier = @"Cell"; 
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

if (cell == nil) { 
    NSArray *objects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:nil options:nil]; 
    for (id currentObject in objects) 
    { 
     if([currentObject isKindOfClass:[UITableViewCell class]]) 
     { 
      cell = (CustomCell *) currentObject; 

      break; 
     } 
    } 
} 


id keyValuePair; 
if (tableView == self.searchDisplayController.searchResultsTableView) 
{ 
    keyValuePair = [self.filteredTableData objectAtIndex:indexPath.row]; 


} 
else 
{ 
    keyValuePair = [self.tableData objectAtIndex:indexPath.row]; 

} 

cell.name.text = keyValuePair[@"name"]; 


return cell; 
} 

回答

0

sortedArray將在您的sortArry:方法結束時超出範圍時被刪除。您需要設置您的UITableViewDelegate方法檢查的屬性或實例變量。

+0

請你告訴我在代碼 – user3273254

+0

肯定,如果你發佈你的cellForRowAtIndexPath:方法。 –

+0

非常感謝,我用cellForRowAtIndexPath更新了我的問題:方法 – user3273254

0

呼叫[tableView reloadData];後數組已排序。

+0

謝謝你的答案,但它並沒有更新我的表 – user3273254

0

sortedArray需求,成爲您的viewController不是sortArry實例變量的屬性,所以,當你重新加載所有UITableViewdelegate方法可以訪問它的值和更新。


// The array You use to populate the table 
@property NSArray ArrayDataSource; 

更改方法簽名返回數組排序

-(NSArray *)sortArry 
{ 

    NSSortDescriptor *ageDescriptor = 
       [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES]; 
    NSArray *sortDescriptors = @[ageDescriptor]; 
    NSArray *sortedArray = 
        [tableData sortedArrayUsingDescriptors:sortDescriptors]; 

    //here i have my data in nslog 
    NSLog(@"%@ sort test",sortedArray); 

    return sortedArray; 
} 

存儲在數據源的返回值:

ArrayDataSource = [self.ArrayDataSource]; 

最後重新裝載表

[self.tableView reloadData]; 
+0

感謝答案,我想擁有所有這些工作人員在我的按鈕,當我點擊我的按鈕,然後整理我的桌子 – user3273254