我目前正在尝试通过发行商O'Reilly的“ Learning Swift 3rd Edition”来完成工作,源代码已here可用。这本书有很多知名的errata,但是我找不到其中的特殊问题。该问题也出现在官方代码中,因此从我的角度来看这可能不是打字错误。
因此,本书尝试讲授两个ViewController之间的手动顺序的概念,第一个嵌入在导航控制器中:
情节提要板将导航栏显示在Edit ViewController中,就像我希望它显示在最终视图中一样-以Edit作为标题,是后退按钮,而不是取消按钮。
在Selfie ViewController中,有一个动作连接到Tap Gesture Recognizer,该动作又调用一个最终执行此调用的函数:
self.performSegue(withIdentifier: "showEditing", sender: image)
这有效,将我路由到Edit ViewController。 然后,我以编程方式在导航栏的右侧添加了完成按钮,因为在情节提要中它仅隐式存在。
//add in a done button
let addSelfieButton = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(done));
self.navigationItem.rightBarButtonItem = addSelfieButton;
问题在于,我用于测试的IPad(2018)上显示的导航栏停留在Selfie ViewController的导航栏上,这意味着它显示为cancel,标题为“ Selfie!”。并且忽略了我的代码以添加“完成”按钮。我调试了一下,按钮的代码肯定被调用了。手动添加导航栏对此没有任何更改,只是未显示更新的导航栏。
我无法在模拟器中对此进行测试(因为它使用了Vision / Core ML),并且我的IPhone当前已被设备管理锁定,无法进行测试,因此我只有一个IPad可以进行测试。
谢谢您的帮助!