2010-07-19 32 views
14

Tôi có UITableView có thể chỉnh sửa được. Tôi cam kết các thay đổi qua:Cách chọn các hàng trong khi ở chế độ chỉnh sửa?

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 

Trong khi ở chế độ chỉnh sửa, tôi muốn người dùng có thể chọn một hàng sẽ đẩy chế độ xem mới. Tôi không chắc chắn làm thế nào để làm điều này. Tôi nghi ngờ nó sẽ ở:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

Nhưng làm cách nào để xác định xem người dùng có đang ở chế độ chỉnh sửa hay không?

UPDATE: Edit Mode là toggled qua:

self.navigationItem.rightBarButtonItem = self.editButtonItem; 

Trả lời

29

Để cho phép lựa chọn trong chỉnh sửa bạn cần phải thiết lập các allowsSelectionDuringEditing tài sản của UITableView YES. Sau đó, nó sẽ gọi thông báo didSelectRowAtIndexPath. Bạn có thể tìm thêm thông tin về tài sản đó ở đây:

http://developer.apple.com/iphone/library/documentation/uikit/reference/UITableView_Class/Reference/Reference.html#//apple_ref/occ/instp/UITableView/allowsSelectionDuringEditing

Sau đó, bạn có thể thấy nếu người dùng đang ở trong chế độ chỉnh sửa bằng cách chạy mã như sau:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    if (tableView.editing == YES) { 
     // Table view is editing - run code here 
    } 
} 
+0

Với iOS 9, didSelectRowAtIndexPath là không bao giờ được gọi trong khi ở chế độ chỉnh sửa ngay cả với allowSelectionDuringEditing = YES. Thay vào đó, bạn có thể thực hiện willSelectRowAtIndexPath-- nó sẽ được gọi nếu bạn cũng đặt allowSelectionDuringEditing = YES. – lifjoy

+0

@ lifjoy, tôi đang phát triển trên iOS 9.2, giải pháp didSelectRowAtIndexPath vẫn hoạt động thông qua allowSelectionDuringEditing. –

+0

@Jerry Chen: thật là tò mò. Không có vấn đề gì tôi đã làm, didSelectRowAtIndexPath đã không làm việc cho tôi khi bảng ở chế độ Edit. – lifjoy

Các vấn đề liên quan