При заполнении UITableView массивом, который может быть изменен несколькими модальными представлениями в течение вашего приложения, я нахожу один из лучших способов сделать это с помощью NSUserDefaults. Вы можете создать объект NSUserDefaults для ссылки, как это:
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
Затем вы можете назначить объекты для каждой клавиши по умолчанию, что на самом деле является просто списком (который представляет собой просто список клавиш с объектами, связанными с ними.
Итак, когда вы хотите сохранить массив по умолчанию, вы можете сказать:
[defaults setObject:mytableinfo forKey:@"tableInformationKey"];
Затем, когда вы захотите получить доступ к этим данным, вы можете сказать:
NSMutableArray* tableInfoCopy = [defaults mutableArrayValueForKey:@"tableInformationKey"];
Это сделает вас копией массива, который вы сохранили в NSUserDefaults (доступ к NSUserDefaults можно получить из любого места в вашем приложении), так что вы сможете вносить изменения в этот изменяемый массив, который вы только что создали. Как только вы закончите вносить изменения, вы можете переназначить их на NSUserDefaults так:
[defaults setObject:tableInfoCopy forKey@"tableInformationKey"];
Итак, когда вы заполняете свой UITableView, в
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
поставить что-то вроде:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Foobar"];
if (cell == nil) {
// No cell to reuse => create a new one
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Foobar"] autorelease];
// Initialize cell with some customization
cell.selectionStyle = UITableViewCellSelectionStyleBlue;
cell.textLabel.textColor = [UIColor blackColor];
}
NSArray* arrayOne = [defaults objectForKey:@"tableInformationKey"];
NSString* title = [arrayTwo objectAtIndex:indexPath.row];
//this goes to the index in the array of whatever cell you are
// at, which will populate your table view with the contents of this array (assuming the array contains strings)
// Customize cell
cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:25];
return cell;
}