Swift:编辑 ABPersonViewController

Swift: Edit ABPersonViewController

我正在尝试设置我的应用程序,以便在从 ABPeoplePickerNavigationController 中打开特定联系人时,在 ABPersonViewController 中右上角会出现一个编辑按钮。

我知道以前在这里问过与此非常相似的问题,但我已经逐一查看了。也许部分是因为它们适用于 iOS 的旧版本,或者因为大多数都在 Objective-C 中,或者由于我自己的无知,我无法解决这个问题。

这是我的代码:

func peoplePickerNavigationController(peoplePicker: ABPeoplePickerNavigationController!, shouldContinueAfterSelectingPerson person: ABRecord!) -> Bool {

    /*let controller = ABPersonViewController()
    controller.displayedPerson = person
    controller.allowsEditing = true
    controller.editing = true
    controller.personViewDelegate = self
    peoplePicker.pushViewController(controller, animated: true)*/

    let picker = ABNewPersonViewController()
    picker.newPersonViewDelegate = self
    picker.displayedPerson = person
    picker.navigationItem.title = "edit contact"
    self.navigationController?.pushViewController(picker, animated: true)

    return false
}

注释的代码是我看到这个问题之前的代码:iOS7 - ABPersonViewController, editing mode

同样,我想做的就是在顶部添加编辑按钮,这样用户就可以选择编辑联系人,但是ABPersonViewController 应该 在编辑模式下打开。

感谢任何帮助,如果这很乏味,我很抱歉。

这应该有效:

// iOS 8 and later
func peoplePickerNavigationController(peoplePicker: ABPeoplePickerNavigationController!, didSelectPerson person: ABRecord!) {
    self.pushViewControllerWithPerson(person)
}

// Prior iOS 8
func peoplePickerNavigationController(peoplePicker: ABPeoplePickerNavigationController!, shouldContinueAfterSelectingPerson person: ABRecord!) -> Bool {
    self.pushViewControllerWithPerson(person)
    return false
}

func pushViewControllerWithPerson(person: ABRecord) {
    let controller = ABPersonViewController()
    controller.displayedPerson = person
    controller.allowsEditing = true
    controller.personViewDelegate = self
    self.navigationController?.pushViewController(controller, animated: true)
}

注:
peoplePickerNavigationController(peoplePicker:shouldContinueAfterSelectingPerson:) 在 iOS 8 中已弃用。因此自此 iOS 版本以来未调用此方法。
peoplePickerNavigationController(peoplePicker:didSelectPerson:) 应该改用。