Thứ Sáu, 29 tháng 7, 2016

Hướng dẫn xoá một hàng trong tableView


Làm thế nào tôi có thể xóa một hàng từ UITableView?

Đây là một câu hỏi mà người dùng thường nêu ra khi xây dựng một TableView đơn giản.

Để thực hiện đơn giản, Mình sẽ sử dụng phiên bản đơn giản của ứng dụng -dùng Default của cell.

Có ba điều chính chúng ta cần phải làm:

1. Viết code để chuyển sang chế độ chỉnh sửa để xóa hàng .
2. Xóa dữ liệu bảng tương ứng từ mô hình .
3. Nạp lại xem bảng để phản ánh sự thay đổi của dữ liệu bảng.

Chúng ta sử dụng bảng tableView ở bài trước … load lại dữ liệu mới và xem sự thay đổi!!!

Bước 1: Viết code để chuyển sang chế độ chỉnh sửa để xóa hàng

Trong ứng dụng iOS, người dùng bình thường sẽ vuốt trên một hàng để xuất hiện nút delete. Trong API có một phương thức :

tableView: commitEditingStyle: forRowAtIndexPath

Khi người dùng vuốt lên row sẽ gọi phương thức này để hoạt động:


  1. - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
  2. {
  3. }






Nó là type vuốt sẽ xuất hiện .

Xem thêm: Địa chỉ dạy học lập trình ios ở đâu tốt nhất

2. Xóa dữ liệu bảng tương ứng từ mô hình .

– Tiếp theo là thêm mã và loại bỏ các dữ liệu bảng thực tế. Cũng như các dạng bảng khác chúng ta sử dụng tham số indexPath trên tableView để xác định vị trí các phần tử trong mảng .Dùng để xoá dữ liệu từ Array.

– Chúng ta không dùng NSArray vì nó cố định không thay đổi được cũng như xoá . Khởi tạo dữ liệu chúng ta sử dụng NSMutableArray- có thể chỉnh sửa xoá dữ liệu thêm …

-Chúng ta khởi tạo dữ liệu như sau :




  1. @interface ViewController ()<UITableViewDelegate,UITableViewDataSource>
  2. @property(nonatomic,strong) NSMutableArray *tableData;// tạo đối tượng mảng có thể thay đổi đươc
  3. @end
  4. @implementation ViewController
  5. - (void)viewDidLoad {
  6. [super viewDidLoad];
  7. // Do any additional setup after loading the view, typically from a nib.
  8. self.tableData = [NSMutableArray arrayWithObjects:@"Egg Benedict", @"Mushroom Risotto", @"Full Breakfast", @"Hamburger", @"Ham and Egg Sandwich", @"Creme Brelee", @"White Chocolate Donut", @"Starbucks Coffee", @"Vegetable Curry", @"Instant Noodle with Egg", @"Noodle with BBQ Pork", @"Japanese Noodle with Pork", @"Green Tea", @"Thai Shrimp Cake", @"Angry Birds Cake", @"Ham and Cheese Panini", nil];
  9. }




Trong tableView: Phương pháp commitEditingStyle, thêm mã sau đây để loại bỏ các dữ liệu thực tế từ mảng. Phương pháp của bạn sẽ trông như thế này:


  1. - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
  2. {
  3. // Remove the row from data model
  4. [tableData removeObjectAtIndex:indexPath.row];
  5. }


Các NSMutableArray cung cấp một số hoạt động để bạn có thể thao tác các nội dung của một mảng. Ở đây chúng tôi sử dụng phương pháp “removeObjectAtIndex” để loại bỏ một mục cụ thể từ các mảng. Bạn có thể thử để chạy các ứng dụng và xóa một hàng. Rất tiếc!Các ứng dụng không hoạt động như mong đợi.

Không phải nó lỗi , cũng không phải chưa xoá từ bảng mà là đã xoá nhưng do chúng ta chưa LoadDatalaij cho bảng nên chưa có sự thay đổi từ bảng.

>> Tìm hiểu thêm tài liệu tu hoc lap trinh ios ở nhà

3. Nạp lại xem bảng:

Vì vậy khi một dữ liệu đã được loại bỏ chúng ta cần reloadData -làm mới lại bảng …


  1. - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
  2. {
  3. // Remove the row from data model
  4. [tableData removeObjectAtIndex:indexPath.row];
  5. // Request table view to reload
  6. [tableView reloadData];
  7. }


Như vậy chúng ta có thể loại bỏ các hàng trên mô hình UITableView.

Kiểm tra ứng dụng của bạn và Xóa một Row




Gợi ý xem thêm các tài liệu lập trình khác:

0 nhận xét:

Đăng nhận xét