用可变数组填充 tableview

Posted

技术标签:

【中文标题】用可变数组填充 tableview【英文标题】:fill tableview with mutable array 【发布时间】:2011-03-19 21:44:56 【问题描述】:

我有一个由用户填充的 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】:

您从 NSUserDefaults 中加载回数组,并使用数组的内容从表视图的 data source 的各种方法中返回适当的值,特别是 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;

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

【讨论】:

你能给我一个例子吗? :)

以上是关于用可变数组填充 tableview的主要内容,如果未能解决你的问题,请参考以下文章

对访问数组中的可变字典感到困惑

如何在tableview的可变数组中存储多个选定的行项

如何在 iphone 中显示 json 的可变数组数据,如可扩展/可折叠 TableView?

为啥 C++ 可以“填充”初始化一个可变大小的数组?

iPhone UITableView 从平面数组填充可变行部分

单击操作表Objective-C Prime No,从文本字段输入的值时填充TableView