如何在tableView中更新数据?

时间:2011-03-30 05:06:54

标签: ios objective-c uitableview

我使用viewDidLoad中的数组初始化表格中的数据,然后将数据添加到单元格中。这是我在书中读到的标准方法。 这就是我所拥有的:

- (void)viewDidLoad {
    [super viewDidLoad];
    //Create array and add data ("tableViewValues" is initialized in .h file)
    tableViewValues = [[NSMutableArray alloc]init];
    [tableViewValues addObject:@"$280,000.00"];
    [tableViewValues addObject:@"$279,318.79"];
}

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

    NSString *cellValue = [tableViewValues objectAtIndex:indexPath.row];

    cell.textLabel.text = cellValue;

    return cell;
}

因此,当加载视图时,这两个货币值都在我的表中。 现在在另一个函数中,我根据用户在文本字段中输入的内容填充另一个具有不同货币编号的数组。如何更新当前的表视图并将这些值替换为其他数组中的值?谁能帮我?谢谢!

7 个答案:

答案 0 :(得分:41)

你可以打电话

[self.tableView reloadData];

要重新加载所有数据,但是,您需要编写一种方法来使您想要填充表的数组。也许你希望你的-cellForRowAtIndexPath调用一个有条件地选择正确数组的私有方法。

答案 1 :(得分:2)

您必须从阵列中删除所有值,然后必须调用表重新加载数据

// In the method where you will get new values
[tableViewValues removeAllObjects];  
[tableViewValues add:@"new values"];  
 //reload table view with new values
[self.tableView reloadData];

答案 2 :(得分:2)

我多次遇到这个问题而且我总是犯同样的错误。

[self._tableview reloadData]有效!

问题是您填充表格的位置。

我在 - (void)viewDidLoad中使用相同数据 更新。显然没有任何反应。

在您之前调用[self._tableview reloadData]的同一位置更新表视图(plist,dictionary,array等)的内容。

这是关键!!!

做一个测试:

#pragma mark - Actions

- (IBAction)refreshParams:(id)sender {

   self.dictionary = nil;

   [self._tableView reloadData];
}

您可以看到按下刷新按钮时tableview内容的消失情况。显然,这是一个例子。我使用字典填充表格,使用按钮刷新内容。

答案 3 :(得分:1)

您需要(发布并)重新创建相同的tableViewValues数组,然后在tableView上调用reloadData方法,如下所示:

[self.tableView reloadData];

如果你在桌面视图控制器上并且self.tableView指向相关表格,这将有效。

答案 4 :(得分:1)

在该函数中,在为新数组赋值后,您所要做的就是

 [tableViewValues removeAllObjects];
 tableViewValues = [[NSMutableArray alloc] arrayByAddingObjectsFromArray:newArray];
 [self.tableView reloadData];

答案 5 :(得分:0)

[self.tableView reloadData];

将为您提供帮助。

答案 6 :(得分:0)

在Swift中,

tableView.reloadData()self.tableView.reloadData(),其中tableView是ViewController中的属性。