我有一个由用户填写的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"];
}
那么,当应用程序再次打开时,如何在tableview中显示已保存的数组?
谢谢:)
答案 0 :(得分:2)
从NSUserDefaults中加载数组,并使用数组的内容从表视图的data source的各种方法返回适当的值,尤其是tableView:numberOfRowsInSection:
和tableView:cellForRowAtIndexPath:
。 / p>
快速举例:
首先,在某些时候从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:
,有关详细信息,请参阅the documentation。