用可变数组填充tableview

时间:2011-03-19 21:44:56

标签: objective-c uitableview ios4 nsmutablearray nsuserdefaults

我有一个由用户填写的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中显示已保存的数组?

谢谢:)

1 个答案:

答案 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;
}

这应该让你开始。在向数组添加内容时,您可能还想在表格视图上调用reloadDatainsertRowsAtIndexPaths:withRowAnimation:,有关详细信息,请参阅the documentation