Nhận chỉ mục đã chọn của UITableView


104

Tôi muốn có chỉ mục được chọn cho UITableView. Tôi đã viết mã sau:

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

Điều này luôn luôn hoạt động cho mục đầu tiên. Tôi muốn có chỉ mục đã chọn trongindexPathForRow.

Xin vui lòng giúp đỡ. Cảm ơn.

Câu trả lời:


216
NSIndexPath *selectedIndexPath = [tableView indexPathForSelectedRow];

5
Nếu bạn cho phép nhiều lựa chọn, hãy cân nhắc sử dụng: - (NSArray *) indexPathsForSelectedRows
yura

Một khi bạn đã thấy *selectedIndexPathnó rất hữu ích cho tôi để có thể truy cập long pathRow = [selectedIndexPath row];long pathSection = [selectedIndexPath section];khi bạn cần lựa chọn cụ thể (lưu ý rằng NSIntegerlà một typedef longmà đến từ một nền C có ý nghĩa hơn vì cả hai nhu cầu %ldanyway.
Jonathan Weinraub

8

Nhận hàng đã chọn hiện tại. Có thể hữu ích nếu bạn chỉ có một phần.

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

5

Sử dụng mã này

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

Trong didSelectRowAtIndexPath, hãy đặt giao diện được khai báo NSIndexPath khi đường dẫn chỉ mục được trả về. Sau đó, bạn có thể cuộn đến biến đó. Nếu bạn cần giúp đỡ, hãy bình luận và tôi có thể đưa ra một số mã mẫu.


Ngoài ra, bạn có thể sử dụng phương pháp của Chris để sử dụng nhanh hơn. Phương pháp trên cung cấp nhiều quyền kiểm soát hơn và có thể được sửa đổi bởi bộ điều khiển chế độ xem chi tiết (ví dụ) của bạn.
Kolin Krewinkel

1

Swift 4.2

let selectedIndexPath = tableView.indexPathForSelectedRow

là một giá trị trả về tùy chọn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.