在做项目的时候,我们有的时候需要动态的去删除,添加toolbar上的元素,例如点击按钮之后出现编辑之类的操作。有很多实现方法,例如声明一个成员变量来判断现在这个时候是不是编辑状态。
这次要写的是在调用func setEditing(editing: Bool, animated: Bool)这个方法的时候,对toolbar进行编辑删除等操作,看了代码可能就会明白一些。
【PS:国外公司大部分都开始采用swift作为开发语言,之前的项目都在重构。这点也是我们应该学习的地方,毕竟要跟随苹果公司的发展方向去走嘛。不能拒绝新鲜事物,swift虽然很新但是它在短短的时间内已经可以胜任开发大型项目的能力,可见苹果公司对它的重视,通过用swift做开发,着实感觉到开发的速度效率确实比OC快很多。】
首先我们先为我们的Toolbar定义一个方法,这个方法是生成item的,并且通过判断现在是否在编辑状态,来决定items中的内容
func updateToolbar(animated: Bool) {
let enditItem = self.editButtonItem()
let spaceBarItem = UIBarButtonItem(barButtonSystemItem:.FlexibleSpace, target: nil, action: nil)
let folderItem = UIBarButtonItem(title: "新規フォルダ", style: .Plain, target: self, action: "addFolderAction:")
doneButton?.enabled = !editing
if editing {
setToolbarItems([folderItem, spaceBarItem, enditItem], animated:animated)
} else {
setToolbarItems([spaceBarItem, enditItem], animated: animated)
}
}
在程序运行之后加载Toolbar
override func viewDidLoad() {
super.viewDidLoad()
updateToolbar(false)
}
然后调用这个方法,去更新Toolbar的结构。
override func setEditing(editing: Bool, animated: Bool) {
super.setEditing(editing, animated: animated)
tableView.setEditing(editing, animated: animated)
updateToolbar(animated)
}