[英]UITableView Edit/Done Button
如何在導航欄上實現一個按鈕,用戶可以重新排序和刪除UITableView的行?
我是否必須創建自己的工具欄按鈕才能擁有UITableView的編輯/完成按鈕?
只需在UITableViewController
viewDidLoad
中添加此行即可
self.navigationItem.leftBarButtonItem = self.editButtonItem;
如果您的表視圖superview是UINavigationController
,它將工作。 此行將添加按鈕,該按鈕將在編輯模式下推出表格。
通常做的是創建自己的自定義BarbuttonItem,然后將此按鈕指定為右側導航欄按鈕項:
UIBarButtonItem *barButtonItem=[[UIBarButtonItem alloc]initWithTitle:@"Edit"
style:UIBarButtonItemStylePlain
target:self
action:@selector(toggleEdit)];
self.navigationItem.rightBarButtonItem = barButtonItem;
[barButtonItem release];
這是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"];
}
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];
}
這是我使用的Swift版本:
func clickedEditButton(button: UINavigationItem) {
tableView.setEditing(!tableView.editing, animated: true)
if tableView.editing {
button.rightBarButtonItem?.title = "Done"
} else {
button.rightBarButtonItem?.title = "Edit"
}
}
這是在非UITableViewController UIViewController有一個出口到UITableView的情況下使用的情況。
如上所述,您無法更改欄按鈕項中的值,特別是如果它是系統項。 如果您願意,可以創建兩個項目並在ivars中使用它們(如UITableViewController)。 雖然創建一個新的執行時間並不是那么多,特別是如果它永遠不會被使用的話。
斯威夫特5
@IBOutlet var table: UITableView!
@IBAction func toggleTableEdit(sender:UIBarButtonItem) {
table.setEditing(!table.isEditing, animated: true)
navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: (table.isEditing) ? .done : .edit, target: self, action: #selector(toggleTableEdit(sender:)))
}
如果您希望按鈕在藍色“完成”顏色和普通“編輯”顏色之間切換,您可以將rightBarButtonItem設置為UIBarButtonItemStyleDone為藍色,或者將UIBarButtonItemStylePlain設置為如此
self.navigationItem.rightBarButtonItem.style = UIBarButtonItemStyleDone;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.