添加"编辑"按钮到UIViewController

时间:2015-05-06 18:51:59

标签: ios swift

我熟悉这段代码: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()
}

我有允许编辑按钮存在的代码,但在我的应用程序和故事板中都没有看到编辑按钮。

我是斯威夫特的初学者,如果有人能指出我的方向很棒,那就太棒了。

3 个答案:

答案 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状态在DoneisEditing之间更改按钮文本。
您可以从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 +)