基于数组更新UITableView

时间:2014-02-26 00:40:47

标签: objective-c json uitableview nsarray nssortdescriptor

我有JSON文件,我把这些信息放在我的表中。我有一个按钮来排序我的数组 我可以对我的数组进行排序并使用NSLog进行打印。如何根据排序的数组更新我的表?

这是我的代码:

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

3 个答案:

答案 0 :(得分:0)

在对数组进行排序后调用[tableView reloadData];

答案 1 :(得分: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];

答案 2 :(得分:0)

sortedArraysortArry:方法结束时超出范围时会被删除。您需要设置UITableViewDelegate方法检查的属性或实例变量。