Подтвердить что ты не робот

Как обновлять данные в 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;
}

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

4b9b3361

Ответ 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];

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