为什么使用 Swift 在视图上执行某些操作时顶部导航栏会消失?

Why top Navigation Bar disappear when do some action on the view using Swift?

我有 ViewController,它有一个按钮可以导航到 CNContactViewController 一切正常我可以返回并再次按下按钮等等。但是当我对CNContactViewControllerShare Contact 顶部导航栏将消失,我肯定会卡在这个视图中..这是代码:

    @IBAction func dothis(sender: AnyObject) {

    let contact = CNMutableContact()
    contact.givenName = "first Name"
    contact.familyName = "Last Name"
    contact.phoneNumbers = [CNLabeledValue(
        label:"Mobile",
        value:CNPhoneNumber(stringValue:"123456789")),
        CNLabeledValue(
            label:"Work Phone",
            value:CNPhoneNumber(stringValue:"1234"))]

    let workEmail = CNLabeledValue(label:"Work Email", value:"ex@whatever.com")
    contact.emailAddresses = [workEmail]

    let controller = CNContactViewController (forContact: contact)
    controller.contactStore = self.store
    controller.allowsEditing = false

    controller.displayedPropertyKeys =
        [CNContactPhoneNumbersKey,CNContactEmailAddressesKey, CNContactPostalAddressesKey]

    self.navigationController?
        .pushViewController(controller, animated: true)

}

我是否需要为 CNContactViewController 上的共享联系人和其他操作执行更多操作?

备注:

1- 联系人卡片上的所有操作都像 CallSend Message 一样工作正常,除了 Share Contact 导致问题。

2- 当我将 VC 上的操作与联系人应用程序进行比较时,我注意到 Share Contact 的弹出选项视图出现在导航栏上,但在我的应用程序中选项视图出现在导航栏后面 .

请参阅左侧的“通讯录”应用和右侧的“我的应用”:

我的项目文件:Here这是一个小项目

根据此

,这是一个错误

这是一个不优雅的解决方案:

  1. 创建一个新的 class 扩展 UINavigationController
  2. 将其分配给故事板中的 NavigationController
  3. 覆盖函数func setNavigationBarHidden(hidden: Bool, animated: Bool)

重新上传了您的项目here

我确实使用 Swift 3 将 Xcode 更新到 8.0 版,并且在不更改代码的情况下解决了问题。