我正在浏览一个Apple教程,其中创建了一个简单的任务跟踪应用程序。有一个包含任务列表的动态表视图和一个静态表视图,用于添加新任务(在这种情况下,它在用户点击navigationItem中的“+”按钮后以模态方式显示)和编辑现有任务(在这种情况下)用户在动态表视图中选择其中一个单元后,通过导航控制器推送它。
教程说静态表视图应该在IB中设置“取消”leftBarButtonItem。对我来说,在创建新任务时,“取消”按钮是可以的,但是当正在查看或编辑现有任务时,带箭头的标准导航“后退”按钮会更合适。教程完全忽略了这个UI问题,我似乎找不到在两种按钮类型之间切换的方法,具体取决于正在执行的segue。唯一想到的是创建单独的表视图,但为了单个按钮,这看起来浪费时间和资源。也许有一种更简单,更明显的方式?
答案 0 :(得分:1)
嗯,有时候只是在问了一个问题之后才找到明显的答案。这行代码:
navigationItem.leftBarButtonItem = navigationItem.backBarButtonItem
,在动态表视图的prepareForSegue()中添加,或者在静态表视图的viewDidLoad()中添加,解决了问题,并将IB中设置的“取消”按钮替换为系统标准导航后退按钮。
答案 1 :(得分:0)
let backButton = UIButton(type: UIButtonType.custom)
backButton.addTarget(self, action: #selector(self.bacButAction), for: UIControlEvents.touchUpInside)
backButton.setImage(UIImage(named: "Your Image"), for: .normal)
backButton.sizeToFit()
let leftBarButtonItem = UIBarButtonItem(customView: backButton)
leftBarButtonItem.title = "Your Title"
self.navigationItem.leftBarButtonItem = leftBarButtonItem
func bacButAction()
{
//do action here
}