2011-09-12 37 views
19

Tôi làm cách nào để triển khai nút trên thanh điều hướng, nhờ đó người dùng có thể sắp xếp lại hàng & xóa các hàng của UITableView?Nút Chỉnh sửa/Hoàn thành UITableView

Tôi có phải tạo nút thanh công cụ của riêng mình để có nút Chỉnh sửa/Xong cho UITableView của tôi không?

Trả lời

44

Chỉ cần thêm dòng này trong viewDidLoad của bạn UITableViewController

self.navigationItem.leftBarButtonItem = self.editButtonItem; 

Nó sẽ có tác dụng nếu bạn xem bảng SuperView là UINavigationController. Dòng này sẽ thêm nút mà sẽ đẩy bảng trong chế độ chỉnh sửa và ra khỏi nó.

+0

tôi đã cố gắng, mặc dù nút là có nhưng nó không đẩy tableView của tôi vào và ra khỏi chế độ chỉnh sửa. Có bất kỳ cuộc gọi đại biểu nào mà tôi phải xử lý không? –

+1

là bộ điều khiển xem của bạn một lớp con của uitableviewcontroller – Robin

+0

@robin. Không, không. –

20

gì thường được thực hiện là bạn tạo của bạn tùy chỉnh riêng BarbuttonItem và sau đó gán vào nút này là đúng nút thanh điều hướng mục:

UIBarButtonItem *barButtonItem=[[UIBarButtonItem alloc]initWithTitle:@"Edit" 
                   style:UIBarButtonItemStylePlain 
                   target:self 
                   action:@selector(toggleEdit)]; 

self.navigationItem.rightBarButtonItem = barButtonItem; 
[barButtonItem release]; 

Dưới đây là phương pháp toggleEdit:

-(void)toggleEdit{ 
      [self.tableView setEditing:!self.tableView.editing animated:YES]; 

      if (self.tableView.editing) 
       [self.navigationItem.rightBarButtonItem setTitle:@"Done"]; 
      else 
      [self.navigationItem.rightBarButtonItem setTitle:@"Edit"]; 
} 
0

Nếu bạn muốn nút của bạn để chuyển đổi giữa màu xanh "Xong" màu và màu "Chỉnh sửa" đơn giản, bạn có thể đặt rightBarButtonItem thành UIBarButtonItemStyleDone cho màu xanh hoặc UIBarButtonItemStylePlain cho đồng bằng như thế này

self.navigationItem.rightBarButtonItem.style = UIBarButtonItemStyleDone; 
6
UIButton *btnname=[UIButton buttonWithType:UIButtonTypeSystem]; 
[btnname setFrame:CGRectMake(0,0,110,35)]; 
[btnname setFont:[UIFont boldSystemFontOfSize:18]]; 
[btnname setTitle: @"Delete" forState: UIControlStateNormal]; 
[btnname setTitleColor:UIColorFromRGB(0xCC0707)  forState:UIControlStateNormal]; 
btnname.backgroundColor=UIColorFromRGB(0xE6E7E8); 
btnname.showsTouchWhenHighlighted = YES; 
[btnname addTarget:self 
      action:@selector(toggleEdit) 
forControlEvents:UIControlEventTouchDown]; 
UIBarButtonItem *barItem = [[UIBarButtonItem alloc] initWithCustomView:btnname]; 
self.navigationItem.rightBarButtonItem = barItem; 


-(void)toggleEdit{ 
    [self.tableView setEditing:!self.tableView.editing animated:YES]; 

    if (self.tableView.editing) 
     [btnname setTitle: @"Done" forState: UIControlStateNormal]; 
    else 
     [btnname setTitle: @"Delete" forState: UIControlStateNormal]; 
} 
+0

Đây là công việc cho tôi .. – Saravanan

4

Đây là một phiên bản Swift tôi đã sử dụng:

func clickedEditButton(button: UINavigationItem) { 
    tableView.setEditing(!tableView.editing, animated: true) 

    if tableView.editing { 
     button.rightBarButtonItem?.title = "Done" 
    } else { 
     button.rightBarButtonItem?.title = "Edit" 
    } 
} 
0

Hãy chắc chắn rằng bạn cần phải khởi tạo danh hiệu đầu tiên. Bởi Storyboard,

enter image description here

sau đó,

@IBAction func editBtnPressed(_ sender: UIBarButtonItem) { 
     tableView.setEditing(!tableView.isEditing, animated: true) 

     if tableView.isEditing { 
      self.editButton.title = "Done" 
     } else { 
      self.editButton.title = "Edit" 
     } 
    } 
Các vấn đề liên quan