0

メソッド「visibleCells」によって返される配列に UITableViewCell の特定のインデックスが含まれているかどうかを調べようとしています。「indexPathsForVisibleRows」メソッドを使用できますが、「visibleCells」メソッドの使用方法を理解しようとしています。現時点では、配列を取得して、その内容を次のように出力するだけです。

NSArray *test = [_table visibleCells];

    for (NSString *i in test) {
        NSLog(@"index is: %@", i);
    }

次の出力が得られます。

index is: <UITableViewCell: 0x715dae0; frame = (0 132; 247 44); text = 'Item 3'; autoresize = W; layer = <CALayer: 0x715d9d0>>
2013-06-13 13:34:19.296 SimpleTable[1203:c07] index is: <UITableViewCell: 0x715e170; frame = (0 176; 247 44); text = 'Item 4'; autoresize = W; layer = <CALayer: 0x715e060>>

特定のインデックスがこの配列に含まれているかどうかを確認する方法を教えてくれる人が必要です。

4

1 に答える 1

0

これを試して:

if ([[tableView indexPathsForVisibleRows] containsObject:[tableView indexPathForCell:cell]) {
    // the cell is visible
} else {
    // the cell is not visible
}

上記を実行するとクラッシュするリスクがあることに注意してください... を使用containsObjectすると、 を使用しても機能しますvisibleCells

if ([[tableView visibleCells] containsObject:cell]) {
    // the cell is visible
} else {
    // the cell is not visible
}

あなたのコードの補足として:

NSArray *test = [_table visibleCells];

for (NSString *i in test) {
    NSLog(@"index is: %@", i);
}

testのインスタンスを保持しないため、for ループは間違っています。...NSStringのインスタンスを保持します。UITableViewCell

于 2013-06-13T18:31:52.283 に答える