как обновить данные в tableView? - PullRequest
18 голосов
/ 30 марта 2011

Я инициализирую данные в моей таблице массивом в 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;
}

Так что, когда представление загружается, эти две значения валюты находятся в моей таблице. Теперь в другой функции я заполняю другой массив различными номерами валют в зависимости от того, что пользователь вводит в текстовое поле. Как мне обновить текущее табличное представление и заменить эти значения значениями в моем другом массиве? Может кто-нибудь мне помочь? Спасибо!

Ответы [ 6 ]

41 голосов
/ 30 марта 2011

Вы можете вызвать

[self.tableView reloadData];

, чтобы перезагрузить все данные, однако вам нужно будет запрограммировать способ заполнения массива, который вы хотите заполнить таблицей.Возможно, вы хотите, чтобы ваш -cellForRowAtIndexPath вызывал закрытый метод, который условно выбирает правильный массив.

2 голосов
/ 02 ноября 2015

У меня была эта проблема много раз, и я всегда делаю одну и ту же ошибку.

[self._tableview reloadData] работает!

Вопрос в том, где вы заполняете таблицу.

Я сделал это в - (void) viewDidLoad, и таблица была обновлена ​​ с теми же данными . Видимо, ничего не происходит.

Обновите содержимое вашего табличного представления (plist, словарь, массив и т. Д.) В том же месте, где вы вызываете [self._tableview reloadData], непосредственно перед этим.

ЭТО КЛЮЧ !!!

сделать тест:

#pragma mark - Actions

- (IBAction)refreshParams:(id)sender {

   self.dictionary = nil;

   [self._tableView reloadData];
}

Вы можете видеть, как исчезает содержимое таблицы при нажатии кнопки обновления. Очевидно, это пример. Я использую словарь для заполнения таблицы и кнопку для обновления содержимого.

2 голосов
/ 17 мая 2013

Вы должны удалить все значения из вашего массива, затем вам нужно вызвать данные перезагрузки таблицы

// In the method where you will get new values
[tableViewValues removeAllObjects];  
[tableViewValues add:@"new values"];  
 //reload table view with new values
[self.tableView reloadData];
1 голос
/ 19 августа 2013

в этой функции, после присвоения значений новому массиву, все что вам нужно сделать, это

 [tableViewValues removeAllObjects];
 tableViewValues = [[NSMutableArray alloc] arrayByAddingObjectsFromArray:newArray];
 [self.tableView reloadData];
1 голос
/ 30 марта 2011

Вам нужно (освободить и) воссоздать тот же массив tableViewValues, а затем вызвать метод reloadData для tableView следующим образом:

[self.tableView reloadData];

Это будет работать, если вы используете контроллер табличного представления и self.tableView указывает на соответствующую таблицу.

0 голосов
/ 25 ноября 2015
[self.tableView reloadData];

поможет вам в этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...