我正在尝试在运行时“干净地”更改UIBarButtonItem文本,以便可以切换编辑/完成模式。但是,每次在运行时更改title属性时,动画看起来都很笨拙。我希望模拟“联系人”应用程序中“编辑/完成”按钮的外观和功能(“编辑”只会淡出,“完成”会显示在其位置)。
@IBAction func editDoneButtonPressed(sender: UIBarButtonItem) {
if(sender.title == "Edit"){
sender.title = "Done"
}else{
sender.title = "Edit"
}
}
初始设置:标识符设置为“自定义”,标题设置为“编辑”
更喜欢简单的编程解决方案,但动画的外观确实是最重要的。我考虑切换UIBarButtonItem标识符,而不是它的text属性,但是,我不确定在运行时切换标识符的优雅方法。
BTW:我正在使用Swift来构建应用程序。
链接到...
联系人应用的截屏视频编辑/完成切换动画: https://youtu.be/5mT_vzpNhIw
我的编辑/完成切换动画的截屏视频: https://youtu.be/mEweotJNVNE
谢谢。
答案 0 :(得分:2)
获得编辑/完成按钮有一种更好的方式,一种标准方式。
UIViewController
提供了一个标准的编辑/完成按钮,该按钮已挂在视图控制器的editing
属性中。
常见用法如下:
在视图控制器的viewDidLoad
方法内,使用标准按钮:
self.navigationItem.rightBarButtonItem = editButtonItem
将editButtonItem
放在您真正需要的地方。
然后,不要设置自己的操作,只需覆盖setEditing(_:animated:)
方法:
override func setEditing(_ editing: Bool, animated: Bool) {
super.setEditing(editing, animated: animated)
if (editing) {
// user just tapped the Edit button (it now says Done)
} else {
// user just tapped the Done button (it now says Edit)
}
}