我有一个按钮,可以从选中切换到未选中。当用户将其更改为选中时,我希望它保存设置。重新进入tableview后,仍应选择所有先前选择的按钮,但不是。使用我的代码,我可以设置一行按钮,但如果我选择多行,则只保留最后一行。这是我尝试过的:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
// code...
if([cell.nameLbl.text isEqualToString:[[NSUserDefaults standardUserDefaults] objectForKey:@"name"]]){
[cell.likeBtn setSelected:YES];
}else{
[cell.likeBtn setSelected:NO];
}
}
在我的TableViewCell的委托方法
中-(void)tableViewCell:(TableViewCell *)cell {
//code...
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
Car *car = self.carArray[indexPath.row];
NSUserDefaults *userPreferences = [NSUserDefaults standardUserDefaults];
[userPreferences setObject:car.name forKey:@"name"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
存储多个选定行时缺少什么?
答案 0 :(得分:0)
您每次都要替换与@"name"
键关联的值。相反,请考虑使用NSArray
作为值,并在select
和deselect
委托方法中对其进行修改。例如:
// select
NSMutableArray *array = [NSMutableArray arrayWithArray:[userPreferences objectForKey:@"names"]];
[array addObject:car.name];
[userPreferences setObject:array forKey:@"names"];
// deselect
NSMutableArray *array = [NSMutableArray arrayWithArray:[userPreferences objectForKey:@"names"]];
[array removeObject:car.name];
[userPreferences setObject:array forKey:@"names"];