2012-05-17 27 views
5

Tôi có chế độ xem có chứa UITableView. Tôi có thể hiển thị nút xóa trên ô khi người dùng vuốt.Làm thế nào để phát hiện nếu nút xóa UItableviewcell bị ẩn?

Nếu người dùng chạm vào nút xóa, một phương pháp sẽ được kích hoạt (hoạt động tốt). Nhưng nếu người dùng quyết định không xóa ô và anh ấy chạm vào bất kỳ vị trí nào trong chế độ xem để ẩn nút xóa.

Tôi có thể phát hiện điều đó bằng cách nào?

Trả lời

3

Khi người dùng chạm bên ngoài đánh dấu xóa trong một tế bào, chương trình của bạn sẽ nhận được một cuộc gọi đến tableView:didEndEditingRowAtIndexPath: trên xem bảng đại biểu.

+0

trình. Cảm ơn :) – Kassem

+0

Điều này dường như không hoạt động từ chế độ chỉnh sửa. –

3

[UITableViewCell showingDeleteConfirmation]

hoặc

[UITableViewCell willTransitionToState:] với UITableViewCellStateShowingDeleteConfirmationMask như tham số

1

Trong lớp con UITableViewCell của bạn triển khai phương thức willTransitionToState:. Phương thức này được gọi bởi UITableView khi ô đang được chuyển đổi sang/từ trạng thái chỉnh sửa.

Khi triển khai lớp, bạn sẽ cần kiểm tra giá trị tham số mặt nạ được truyền vào điều kiện để xác định trạng thái ô đang chuyển sang/từ. Giá trị có thể cho mặt nạ là ...

enum { 
    UITableViewCellStateDefaultMask      = 0, 
    UITableViewCellStateShowingEditControlMask   = 1 << 0, 
    UITableViewCellStateShowingDeleteConfirmationMask = 1 << 1 
}; 

Trong trường hợp của bạn, bạn sẽ muốn xem cho hiệu ứng chuyển tiếp đến UITableViewCellStateDefaultMask để thực hiện của bạn sẽ như sau ...

- (void)willTransitionToState:(UITableViewCellStateMask)state { 
    if (state == UITableViewCellStateDefaultMask) { 
     // User has switched back to default state... 
     // ... 
    } 
} 
Các vấn đề liên quan