我熟悉这段代码:self.navigationItem.leftBarButtonItem = self.editButtonItem
。
请参阅此代码:
class ThirdViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet var tblTasks: UITableView! // declaring this allows you to reload the tableView to update your items
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.navigationItem.rightBarButtonItem = self.editButtonItem()
}
我有允许编辑按钮存在的代码,但在我的应用程序和故事板中都没有看到编辑按钮。
我是斯威夫特的初学者,如果有人能指出我的方向很棒,那就太棒了。
答案 0 :(得分:3)
股票“编辑”按钮仅适用于UITableViewController
。对于其他视图控制器类型,您必须自己创建一个按钮。
答案 1 :(得分:0)
您可以创建自己的编辑按钮,例如:
self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Edit", style: .Plain, target: self, action: Selector("editTableView"))
然后:
func editTableView()
{
if self.navigationItem.rightBarButtonItem.title == "Edit"
{
self.navigationItem.rightBarButtonItem.title = "Done"
//edit your tableView Here!
}
else
{
self.navigationItem.rightBarButtonItem.title = "Edit"
//when youre finishing editing
}
}
答案 2 :(得分:0)
如果将其添加到navigationItem
中,则应将该视图控制器嵌入UINavigationController
中以查看该按钮。
您不会在Storyboard中看到该按钮,因为已在代码中进行了设置。在情节提要中,您仅设置控制器的初始状态。
如何在UIViewController
子类中设置编辑模式:
editButtonItem
中有UIViewController
变量。如果将其添加到屏幕上,则用户点击该按钮时将触发setEditing(_:,animated:)
。
同样,它将根据ViewController的Edit
状态在Done
和isEditing
之间更改按钮文本。
您可以从self.isEditing
获取当前状态
不要忘记调用super.setEditing(_:animated:)
,否则它将不会更改按钮和视图控制器的状态。
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.rightBarButtonItem = self.editButtonItem
}
override func setEditing(_ editing: Bool, animated: Bool) {
super.setEditing(editing, animated: animated)
// custom code to handle edit mode
}
editButtonItem(iOS 10.0+)
isEditing(iOS 2.0+)
setEditing(_:animated:)(iOS 2.0 +)