0

現在、ユーザーがスクロールしてセルを選択できる uitableview があります。セルが選択されたら、その indexpath 値を保存し、ユーザーが uitableview を含むビューに戻ったときに、その indexpath 値を返し、以下のコードを使用して tableView:cellForRowAtIndexPath: 内のそのセルに目盛りを割り当てます。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

//...


//Replaces previously selected cells accessory view (tick)
    if (indexPath == oldCheckedData) 
    {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
        NSLog(@" Tick");
    } 
    else 
    {
        cell.accessoryType = UITableViewCellAccessoryNone;
        NSLog(@"No Tick");
    } 
}

奇妙なことは、エミュレータでこれをテストすると完全に動作することです....しかし、電話でテストしようとすると、最初のifステートメントに入ることはありません...したがって、ティックは決して追加されません。

4

1 に答える 1

1

インデックスパスではなく、ポインターを比較していると思います。equal equal の代わりに、次を使用します。

[indexPath isEqual:oldCheckedData]
于 2011-10-19T23:35:25.663 に答える