使用NSUserDefaults根据按下的表视图单元格加载数据

时间:2012-11-03 04:57:07

标签: iphone objective-c ios uitableview nsuserdefaults

我希望我的应用程序像iOS上的“联系人”应用程序一样工作。当用户选择某个TableViewCell时,我想加载某些数据。

enter image description here

无论哪个细胞被按下,无论是“约瑟夫,理查德还是香农”,这个观点出现了:

enter image description here

enter image description here

两个视图看起来完全相同,但它们只显示不同的信息。所以我想我的问题是:如何使用NSUserDefaults为每个单元格以编程方式设置密钥@“cell1”@“cell2”等等?但是这里有捕获,我不知道会添加多少个单元格,所以我不能对此进行硬编码,如何为每个表格视图单元格创建一个键,以便添加多少?谢谢你的帮助!

3 个答案:

答案 0 :(得分:2)

如果您仍然坚持使用NSUserDefaults,请尝试以下方法:

NSUserDefaults * prefs = [NSUserDefaults standardUserDefaults];
cellNumber = [prefs objectForKey:[NSString stringWithFormat:@"cell%d", index]];

然后,您可以保存最大索引,以便确切知道必须显示多少UITableViewCells

请确保NSUserDefaults存储空间不足,因此您可能无法存储所有信息。您可以找到更多详细信息here

希望有帮助!

答案 1 :(得分:1)

也许您不想使用NSUserDefaults ....它仅用于持久性用户信息,例如首选项。最好将Core Data用于此类事情。

由于您要标记视图,因此一个想法是在单元格出列期间使用-[UIView setTag:]上的UIView.tagUITableViewCell属性/方法。使用UITableView委托方法,您可以检测单元格上的点按,检索其标记,然后查找NSUserDefaults或更好的数据库。

首选方法是保留索引数据库,使单元格出列,以及在单击时,使用单元格索引导航到详细信息窗格。这是一个更具代表性的编程模型,而不是标记视图并使用NSUserDefaults来提取数据。

答案 2 :(得分:0)

您可以通过创建NSMutableDictionary来存储每个单元格的键/值对,而不是将其存储在NSUserDefaults中

NSMutableDictionay *dict = [[NSMutableDictionary alloc] init];
[[NSUserDefaults standardUserDefaults] setObject:dict forKey:@"myKey"];
[dict release];

,您可以随时使用单元格值更新字典:

NSMutableDictionary *dict = [[NSUserDefaults standardUserDefaults] objectForKey:@"myKey"];
[dict setValue:aNameforThisCell forKey:[NSString stringWithFormat@"cell%d", indexPath.row]];