UITableViewの選択されたインデックスを取得します。


104

のインデックスを選択しますUITableView。私は次のコードを書きました:

NSIndexPath *index = [NSIndexPath indexPathForRow:1 inSection:0];
[tableView scrollToRowAtIndexPath:index 
                 atScrollPosition:UITableViewScrollPositionTop 
                         animated:YES];

これは常に最初のアイテムで機能します。インデックスを選択したいindexPathForRow.

助けてください。ありがとう。

回答:


216
NSIndexPath *selectedIndexPath = [tableView indexPathForSelectedRow];

5
複数の選択を許可する場合は、次の使用を検討してください。-(NSArray *)indexPathsForSelectedRows
yura

あなたはそれを持っていたら*selectedIndexPath、私がアクセス持つことが有用であるlong pathRow = [selectedIndexPath row];とをlong pathSection = [selectedIndexPath section];使用して、特定の選択(注必要なときにNSIntegerされたtypedef longCの背景が必要両方のため、より理にかなっているから%ld。とにかく
ジョナサンWeinraub

8

現在選択されている行を取得します。セクションが1つしかない場合に役立ちます。

- (NSUInteger)currentSellectedRowIndex
{
    NSIndexPath *selectedIndexPath = [self.tableView indexPathForSelectedRow];
    if (selectedIndexPath) {
        return selectedIndexPath.row;
    }
    else {
        return NSNotFound;
    }
}

5

このコードを使用

CGPoint location =[sender locationInView:self.tableView];
NSIndexPath *swipedIndexPath = [self.tableView indexPathForRowAtPoint:location];
UITableViewCell *swipedCell  = [self.tableView cellForRowAtIndexPath:swipedIndexPath];
NSIndexPath *indexPath = [self.tableView indexPathForCell:swipedCell];

4

didSelectRowAtIndexPathで、NSIndexPathを宣言したインターフェースを、返されるインデックスパスとして設定します。次に、その変数までスクロールできます。助けが必要な場合はコメントしてください。サンプルコードをいくつかあげます。


または、Chrisの方法を使用してより速く使用することもできます。上記の方法は、より詳細な制御を提供し、(例)詳細ビューコントローラーによって変更できます。
Kolin Krewinkel、

1

Swift 4.2

let selectedIndexPath = tableView.indexPathForSelectedRow

これはオプションの戻り値です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.