Как обновлять данные в tableView?
Я инициализирую данные в своей таблице массивом в 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;
}
Поэтому, когда загружается представление, эти два значения валюты находятся в моей таблице.
Теперь в другой функции я заполняю другой массив разными номерами валют в зависимости от того, что пользователь вводит в текстовое поле. Как мне обновить текущее представление таблицы и заменить эти значения на значения в моем другом массиве? Может кто-нибудь мне помочь? Спасибо!
Ответы
Ответ 1
Вы можете позвонить
[self.tableView reloadData];
чтобы перезагрузить все данные, однако вам необходимо запрограммировать способ иметь массив, который вы хотите заполнить таблицей. Возможно, вы хотите, чтобы ваш -cellForRowAtIndexPath вызывал частный метод, который условно выбирает правильный массив.
Ответ 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];
Ответ 3
У меня была эта проблема много раз, и я всегда делал ту же ошибку.
[self._tableview reloadData]
работает!
Вопрос - это место, где вы заполняете таблицу.
Я сделал это в (void) viewDidLoad, а таблица была обновлена с теми же данными. Видимо, ничего не происходит.
Обновите содержимое табличного представления (plist, dictionary, array, whatever) в том же месте, где вы вызываете [self._tableview reloadData], как раз перед этим.
ЭТО КЛЮЧ!
Проведите тест:
#pragma mark - Actions
- (IBAction)refreshParams:(id)sender {
self.dictionary = nil;
[self._tableView reloadData];
}
Вы можете увидеть, как исчезнуть содержимое таблицы, когда вы нажимаете кнопку обновления. Очевидно, это пример. Я использую словарь для заполнения таблицы и кнопки для обновления содержимого.
Ответ 4
Вам нужно (release и) воссоздать один и тот же массив tableViewValues
, а затем вызвать метод reloadData
в tableView следующим образом:
[self.tableView reloadData];
Это будет работать, если вы находитесь на контроллере табличного представления, а self.tableView
указывает на таблицу, о которой идет речь.
Ответ 5
в этой функции после назначения значений новому массиву все, что вам нужно сделать, это
[tableViewValues removeAllObjects];
tableViewValues = [[NSMutableArray alloc] arrayByAddingObjectsFromArray:newArray];
[self.tableView reloadData];
Ответ 6
[self.tableView reloadData];
поможет вам в этом.