0

鉴于以下情况:

let contactStore = CNContactStore()
let groupId = '<a valid group ID>'
let keysToFetch = [ // removed for brevity ]
var group: CNGroup? = nil

do {
  let predicate = CNGroup.predicateForGroups(withIdentifiers: [groupId])
  group = try contactStore.groups(matching: predicate).first
} catch let error as NSError {
  callback([error.localizedDescription, false])
}

let contactController = CNContactViewController(forNewContact: nil)
contactController.parentGroup = group
contactController.contactStore = contactStore
contactController.delegate = self
contactController.allowsEditing = true
contactController.allowsActions = true
contactController.displayedPropertyKeys = keysToFetch

当控制器通过以下方式显示时:

self.contactController = contactController

let navigationController = UINavigationController(rootViewController: contactController)
self.navigationController = navigationController

var currentViewController = UIApplication.shared.keyWindow?.rootViewController
while((currentViewController?.presentedViewController) != nil) {
  currentViewController = currentViewController?.presentedViewController
}

DispatchQueue.main.async(execute: {
  currentViewController?.present(navigationController, animated: true) {
    contactController.navigationItem.leftBarButtonItem = UIBarButtonItem.init(barButtonSystemItem: UIBarButtonSystemItem.cancel, target: self, action: #selector(self.cancelButtonPressed))
  }
})

呈现CNContactViewController()为空白:

在此处输入图像描述

我究竟做错了什么?文档非常稀少parentGroup

4

1 回答 1

0

摆脱此代码,它将起作用:

contactController.displayedPropertyKeys = keysToFetch
于 2017-12-21T01:16:00.450 回答