在viewDidLoad上显示来自UITableView的标记行

时间:2014-08-16 18:54:17

标签: ios objective-c uitableview

我有一个允许用户选择行的选择列表。选择一行后,会显示一个复选标记,cell.textLabel.text值将保存为NSUserDefaults上的数组。

我遇到麻烦的是,当用户回来从NSUserDefaults(以前的场合)制作accessoryView复选标记时。

以下是当前代码:

if ([[userDefaults objectForKey:@"selectedProducts"]) isEqualTo:cell.textLabel.text] {
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
}

但是,我收到错误是一种无效的方法。任何帮助表示赞赏。感谢

编辑:如果我打印NSLog(@"%@", [userDefaults objectForKey:@"selectedProducts"]),我会收到以下信息:

2014-08-16 21:26:01.749 Abonos[575:60b] (
    "Product 1",
    "Product 2",
    "Product 3",
    "Product 4"
)

2 个答案:

答案 0 :(得分:2)

试试这个,你应该枚举每个单元格的所有值

for(uint i=0 ;i<[userDefaults objectForKey:@"selectedProducts”].count ; i++)
{
    if([[[userDefaults objectForKey:@"selectedProducts”]objectAtIndex:i] isEqualToString:cell.textLabel.text])
    {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
        break;
    }
}

答案 1 :(得分:0)

我假设[userDefaults objectForKey:@"selectedProducts"]返回一个数组。但是,您尝试将返回的数组与NSString进行比较,该数组永远不会评估为true。您需要获取数组并迭代其值,使用isEqualToString:(不是isEqualTo)将每个值与单元格文本值进行比较。