我有一个标签栏项目,用于在tableview中显示用户收藏夹。我有另一个标签栏项目,它显示一个视图,并允许用户添加收藏夹。
更新
此类收藏夹会从创建和添加收藏夹的类的viewDidLoadMethod中的NSUserDefaults中读取。
NSUserDefaults *def = [NSUserDefaults standardUserDefaults];
NSArray *prefs = [def arrayForKey:@"addedQuotes"];
userAddedQuotes = [[NSMutableArray alloc] initWithArray:prefs];
然后当用户实际添加收藏夹
时执行此代码if([text1.text length] && [text2.text length])
{
NSString *temp = [NSString stringWithFormat:@"%@^%@",
text1.text, text2.text];
[userAdded addObject:temp];
NSUserDefaults *myDefault = [NSUserDefaults standardUserDefaults];
[myDefault setObject:userAdded forKey:@"addedFavorites"];
在tableview类中,从NSUserDefaults加载此数组以显示值,我在viewWillAppear方法中使用以下内容。
NSUserDefaults *def = [NSUserDefaults standardUserDefaults];
NSArray *prefs = [def arrayForKey:@"addedFavorites"];
favorites = [[NSMutableArray alloc] initWithArray:prefs];
目前,如果我添加收藏夹,然后转到显示收藏夹选项卡视图,则不会加载新添加的项目。只有当我退出时(按主页按钮)并再次启动应用程序。
如果选中标签栏项并显示视图,如何让视图再次从用户默认值中读取?
此致
答案 0 :(得分:2)
您是否尝试过调用同步?
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults synchronize];
以下评论的更新 - 您的表格应该使用加载了NSUserDefaults
的数组中的数据。
你的cellForRowAtIndexPath
应该是这样的(如果你正在重复使用表格单元格,那么你应该这样做)
...
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier] autorelease];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}
// update cell
cell.textLabel.text = [myUserDefaultsArray objectAtIndex:indexPath.row];
NSLog(@"The table data should be %@", [myUserDefaultsArray objectAtIndex:indexPath.row]);
return cell;
您可以快速显示数组的内容,以确保在显示视图时更新数据,方法是在视图出现时执行此操作(假设您已经加载了数组)
int i = 0;
for (i; i<=[myUserDefaultsArray count] - 1; i++) {
NSLog(@"data is %@ for row %d", [myUserDefaultsArray objectAtIndex:i], i);
}