12

これは非常にばかげたものになるでしょうが、私の cellForRowAtIndexPath には次のコードがあります。

if ([self.indexPathSelected compare:indexPath] == NSOrderedSame)
{
    NSLog(@" %d %d %d %d", self.indexPathSelected.row, self.indexPathSelected.section, indexPath.row, indexPath.section);
}

これは以下を出力します:

0 0 0 0

0 0 1 0

0 0 2 0

0 0 3 0

0 0 4 0

0 0 5 0

0 0 0 0 のみを出力することを期待していました。

ここで何が間違っていますか?

4

2 に答える 2

3

興味深いのは、ポインターを比較するようにオブジェクトを比較できることです。ただし、iPhone 5s 以降でのみ可能です。私は今日このジョークを見つけました)。すべてのデバイスの iOS は 8.1 でした

iPhone 5s 以降で動作します: (セクションと行を比較します)

if (optionsPath != pathForOptionsCellOfSelected)
//if ([optionsPath compare:pathForOptionsCellOfSelected] != NSOrderedSame)
{
    //if user selects cell under already selected, we do not need to shift index
    if (optionsPath.row < selectedRowIndexPath.row)
    {
        pathForOptionsCellOfSelected = selectedRowIndexPath;
    }
    [_tableView insertRowsAtIndexPaths:@[pathForOptionsCellOfSelected] withRowAnimation:UITableViewRowAnimationTop];
    optionsPath = [pathForOptionsCellOfSelected copy];
}

とにかく、それは良いアプローチではありません。

于 2014-11-26T07:39:56.370 に答える