3

我目前正在更新一个很久以前就开始工作的旧 Xcode 项目。我将部署目标更新为 iOS 10.0,所以我被迫用 framework.replace 替换了ABAddressBook框架Contacts。我曾经展示过ABPeoplePickerNavigationController一个 Container View 的内部,它是一个UINavigationController. 这样,我就能够在导航控制器中呈现人员选择器 UI,该控制器位于选项卡栏控制器内(这意味着顶部的导航栏和底部的选项卡栏仍然显示在人员选择器 UI 周围)。我曾经用这段代码来做(在viewWillAppear导航控制器的根视图控制器中调用:

let peoplePickerNavController:ABPeoplePickerNavigationController = ABPeoplePickerNavigationController()
    self.addChildViewController(peoplePickerNavController)
    peoplePickerNavController.didMove(toParentViewController: self)
    peoplePickerNavController.navigationBar.removeFromSuperview()
    peoplePickerNavController.view.frame = self.peoplePickerContainerView.bounds
    peoplePickerNavController.view.translatesAutoresizingMaskIntoConstraints = true
    peoplePickerNavController.peoplePickerDelegate = self
    self.peoplePickerContainerView.addSubview(peoplePickerNavController.view)

使用此代码,它将完美地显示地址簿,导航控制器的导航栏仍在顶部,标签栏控制器的标签栏仍在底部。我现在正在尝试用 做同样的事情CNContactPickerViewController,但是我在这个上遇到了一些麻烦。当我对导航控制器做同样的事情时,它不会给我任何错误,但视图控制器没有显示。即使我将view视图控制器添加到我的容器视图中,它也只是显示一个空白视图。这是我现在使用的代码:

let contactPickerViewController:CNContactPickerViewController = CNContactPickerViewController()
    self.addChildViewController(contactPickerViewController)
    contactPickerViewController.didMove(toParentViewController: self)
    contactPickerViewController.view.frame = self.contactPickerContainerView.bounds
    contactPickerViewController.view.translatesAutoresizingMaskIntoConstraints = true
    contactPickerViewController.delegate = self
    self.contactPickerContainerView.addSubview(contactPickerViewController.view)

这两个代码之间唯一的显着区别是我没有从视图控制器中删除导航栏(因为它没有导航栏)。除此之外,我留下的一切都差不多。我猜我需要更改一些其他的东西才能使它工作,因为在容器视图中添加导航控制器和添加视图控制器之间是有区别的。任何人都可以帮助我并给我一些关于如何实现这一目标的提示吗?谢谢!

4

1 回答 1

3

使用此代码在 tabBar 中显示 contactPickerViewController

let contactPickerViewController:CNContactPickerViewController = CNContactPickerViewController()
contactPickerViewController.modalPresentationStyle = .overCurrentContext
self.presentViewController(contactPicker, animated: false, completion: nil)
于 2017-10-04T13:06:46.263 回答