заполнить таблицу с изменяемым массивом - PullRequest
1 голос
/ 20 марта 2011

У меня есть nsmutablearray, который заполняется пользователем:

NSString *_string = _text.text;
[_array addObject:_string];
[self saveIt];
_text.text = @"";

_text - это textField, _array - это nsmutablearray

, тогда у меня есть метод, который сохраняетстрока в nsuserdefaults:

-(void)saveIt {

NSUserDefaults *tableDefaults = [NSUserDefaults standardUserDefaults];
[tableDefaults setObject:_array forKey:@"key"];

}

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

спасибо:)

1 Ответ

2 голосов
/ 20 марта 2011

Вы загружаете массив обратно из NSUserDefaults и используете содержимое массива для возврата соответствующих значений из различных методов источника данных табличного представления , в частности tableView:numberOfRowsInSection: и tableView:cellForRowAtIndexPath:.


Быстрый пример:

Сначала прочитайте массив обратно из NSUserDefaults в какой-то момент, возможно, в init вашего класса или в application:didFinishLaunchingWithOptions: (после вызова NSUserDefaults registerDefaults:, конечно):

_array = [[NSMutableArray arrayWithArray:[[NSUserDefaults standardUserDefaults] arrayForKey:@"key"]] retain];

Затем используйте его для упомянутых методов:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return _array.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
    if (!cell) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"] autorelease];
    }
    cell.textLabel.text = [_array objectAtIndex:indexPath.row];
    return cell;
}

Это должно начать вас. Возможно, вы также захотите вызвать reloadData или insertRowsAtIndexPaths:withRowAnimation: в табличном представлении при добавлении чего-либо в массив, подробности смотрите в документации .

...