Tôi muốn có thể vuốt sang trái hoặc phải ở bất kỳ vị trí nào trong ô xem bảng để xóa ô có hoạt ảnh mà không hiển thị nút xóa. Tôi có thể làm cái này như thế nào?Vuốt sang trái hoặc sang phải bất kỳ nơi nào trong UITableViewCell để xóa ô không có nút xóa?
Trả lời
Tôi chưa thử và triển khai, nhưng tôi sẽ quay. Đầu tiên, tạo một UITableViewCell tùy chỉnh, và để cho nó có 2 tính năng mà bạn có thể sử dụng
- Một tham chiếu tới tableView nó đang được sử dụng trong.
- Một indexPath để tìm các tế bào trong tableView. (Lưu ý, điều này cần phải được cập nhật mỗi khi bạn xóa một ô cho tất cả các ô nơi thay đổi này)
Trong cellForRowAtIndexPath:
, nơi bạn tạo ô tùy chỉnh, hãy đặt các thuộc tính này. Ngoài ra, hãy thêm UISwipeGestureRecognizer vào ô
cell.tableView=tableView;
cell.indexPath=indexPath;
UISwipeGestureRecognizer *swipeGestureRecognizer=[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(deleteCell:)];
[cell addGestureRecognizer:swipeGestureRecognizer];
[swipeGestureRecognizer release];
Đảm bảo rằng cử chỉ chỉ nhận được vuốt ngang.
-(BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if([[gestureRecognizer view] isKindOfClass:[UITableViewCell class]]&&
((UISwipeGestureRecognizer*)gestureRecognizer.direction==UISwipeGestureRecognizerDirectionLeft
||(UISwipeGestureRecognizer*)gestureRecognizer.direction==UISwipeGestureRecognizerDirectionRight)) return YES;
}
Trong bạn deleteCell:
-(void) deleteCell:(UIGestureRecognizer*)gestureRec
{
UIGestureRecognizer *swipeGestureRecognizer=(UISwipeGestureRecognizer*)gestureRec;
CustomCell *cell=[swipeGestureRecognizer view];
UITableView *tableView=cell.tableView;
NSIndexPath *indexPath=cell.indexPath;
//you can now use these two to perform delete operation
}
Đừng quên rằng bạn cần phải thiết lập hướng cho bộ nhận dạng cử chỉ khi lần đầu tiên khởi tạo nó để thêm nó vào ô. Một cái gì đó như thế này: swipeGestureRecognizer.direction = UISwipeGestureRecognizerDirectionRight; – ColossalChris
Apple, đừng cho bạn không cung cấp '(void) cancelPreviousPerformRequestsWithTarget: (id) aTarget select: (SEL) aSelector'. –
cho rằng u phải thêm mã này vào dự án của bạn.
// Override to support conditional editing of the table view.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
// Return YES if you want the specified item to be editable.
return YES;
}
// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
//add code here for when you hit delete
}
}
thông tin khác mor u có thể đi qua liên kết này enter link description here
Vivek2012 và iWill - Cảm ơn bạn đã trả lời nhưng tôi không muốn hiển thị nút DELETE, đã có câu trả lời cho những người trong stackoverflow. Tôi muốn ô bị xóa khỏi phút nhận được cử chỉ sang trái hoặc phải.xin vui lòng đọc mô tả của tôi nhờ – carbonr
thực hiện
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath;
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath;
hai phương pháp này, nếu UITableViewCellEditingStyle là UITableViewCellEditingStyleDelete, sau đó làm sth để xóa di động của bạn với
- (void)deleteRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;
đó là tất cả.
Giải pháp đăng bởi @MadhavanRP hoạt động, nhưng nó là phức tạp hơn nó cần phải được. Bạn có thể thực hiện một cách tiếp cận đơn giản hơn và tạo một trình nhận dạng cử chỉ xử lý tất cả các lần vuốt xuất hiện trong bảng và sau đó lấy vị trí của thao tác vuốt để xác định ô nào người dùng đã vuốt.
Để thiết lập bộ nhận dạng cử chỉ:
- (void)setUpLeftSwipe {
UISwipeGestureRecognizer *recognizer;
recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self
action:@selector(swipeLeft:)];
[recognizer setDirection:UISwipeGestureRecognizerDirectionLeft];
[self.tableView addGestureRecognizer:recognizer];
recognizer.delegate = self;
}
Gọi phương pháp này trong viewDidLoad
Để xử lý các swipe:
- (void)swipeLeft:(UISwipeGestureRecognizer *)gestureRecognizer {
CGPoint location = [gestureRecognizer locationInView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:location];
... do something with cell now that i have the indexpath, maybe save the world? ...
}
lưu ý: vc bạn phải thực hiện các đại biểu cử chỉ recognizer .
- 1. Muốn hiển thị nút xóa trên vuốt từ phải sang trái trong UITableView
- 2. Android "vuốt từ trái sang phải để xóa", cử chỉ trên mục danh sách, Kiểu ICS
- 3. VI (VIM): xóa/thay đổi từ phải sang trái?
- 4. Cách di chuyển nút sang trái hoặc sang phải lập trình trong android
- 5. Phải sang trái UILabels
- 6. Vuốt để Xóa trong UITableViewCell có nền trắng, cần rõ ràng
- 7. Tác vụ vuốt micrô mô phỏng của iPhone, nhưng vuốt sang trái không?
- 8. Tôi có thể vuốt (trái hoặc phải) trong Chrome (PC) bằng chuột không?
- 9. Làm thế nào để phát hiện nếu nút xóa UItableviewcell bị ẩn?
- 10. Hình nền Android cũng trượt sang trái và sang phải khi chúng tôi vuốt màn hình chính
- 11. Có cách nào để dịch chuyển các dòng được đánh dấu sang trái hoặc sang phải trong Notepad ++
- 12. Text: phải sang trái (CSS)
- 13. Bất kỳ cách nào để xóa/xóa/loại bỏ OutputCache?
- 14. Cách thay đổi hoạt động bằng thao tác vuốt sang trái bên phải
- 15. LinearLayout được điền từ phải sang trái
- 16. Vuốt để xóa UITableView
- 17. Chức năng Haskell từ trái sang phải
- 18. Vuốt để xóa tùy chọn trong các sự cố UITableView
- 19. Làm cách nào để thay đổi hình ảnh trang trong các tệp PDF sang trái hoặc sang phải?
- 20. Làm thế nào để phát nổ chuỗi phải sang trái?
- 21. Biến C có thể bị xóa hoặc xóa bất kỳ lúc nào trong khi chạy chương trình không?
- 22. Align giá trị spinner sang phải thay vì trái
- 23. Vuốt cử chỉ trái qua UITextField
- 24. Nút xóa chồng chéo nội dung UITableViewCell khi ở chế độ chỉnh sửa trong iOS7
- 25. Làm cách nào để phát hiện xem chuỗi có chứa bất kỳ ký tự Phải-Trái nào không?
- 26. Làm thế nào để loại bỏ UITableViewCell swipe để xóa thư bị trả lại
- 27. phải sang trái Ngôn ngữ Bracket Đảo ngược
- 28. vuốt Android để xóa hàng danh sách
- 29. Xử lý Swipe lên, vuốt xuống, vuốt sang trái & Swipe Ngay Cử chỉ trong một ứng dụng WinRT
- 30. ngôn ngữ từ phải sang trái trong Python
nếu bạn có thể, đăng mã của bạn? –