ContactsUI:如何在 iOS 上创建新联系人时仅显示特定字段?
ContactsUI: how to show only specific fields when creating new contact on iOS?
目标是在 iOS 上添加新联系人时仅显示某些字段。
例如,假设您只想显示和编辑联系人的地址、phone 号码和名字。
下面的代码不起作用。所有字段仍然显示。
将此视图控制器放入项目中,尽管使用了 displayedPropertyKeys.
,您仍会看到所有联系人字段仍然存在
你会怎么做?
import Foundation
import Contacts
import ContactsUI
class ContactViewController: UIViewController, CNContactViewControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
}
func createContact() {
let contactController = CNContactViewController(forNewContact: nil)
contactController.delegate = self
contactController.allowsEditing = true
contactController.allowsActions = true
contactController.displayedPropertyKeys = [CNContactPostalAddressesKey, CNContactPhoneNumbersKey, CNContactGivenNameKey]
contactController.view.layoutIfNeeded()
present(UINavigationController(rootViewController: contactController), animated:true)
}
// =============================================================================================================
// MARK: IB Actions
// =============================================================================================================
@IBAction func newContactButtonDidTap(_ sender: UIButton) {
createContact()
}
// =============================================================================================================
// MARK: UIViewController Functions
// =============================================================================================================
override var prefersStatusBarHidden: Bool {
return true
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
让我附上 CNContactViewController
class 声明的屏幕截图:
CNContactViewController
正如您在图片中看到的,那里有一个@note,上面写着:“编辑联系人时所有属性都可见”。所以我认为当你创建联系人时被认为是编辑联系人的一个特例。
我使用 displayedPropertyKeys
只是为了显示联系人,在这种情况下效果很好。
希望对您有所帮助!
目标是在 iOS 上添加新联系人时仅显示某些字段。
例如,假设您只想显示和编辑联系人的地址、phone 号码和名字。
下面的代码不起作用。所有字段仍然显示。
将此视图控制器放入项目中,尽管使用了 displayedPropertyKeys.
你会怎么做?
import Foundation
import Contacts
import ContactsUI
class ContactViewController: UIViewController, CNContactViewControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
}
func createContact() {
let contactController = CNContactViewController(forNewContact: nil)
contactController.delegate = self
contactController.allowsEditing = true
contactController.allowsActions = true
contactController.displayedPropertyKeys = [CNContactPostalAddressesKey, CNContactPhoneNumbersKey, CNContactGivenNameKey]
contactController.view.layoutIfNeeded()
present(UINavigationController(rootViewController: contactController), animated:true)
}
// =============================================================================================================
// MARK: IB Actions
// =============================================================================================================
@IBAction func newContactButtonDidTap(_ sender: UIButton) {
createContact()
}
// =============================================================================================================
// MARK: UIViewController Functions
// =============================================================================================================
override var prefersStatusBarHidden: Bool {
return true
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
让我附上 CNContactViewController
class 声明的屏幕截图:
CNContactViewController
正如您在图片中看到的,那里有一个@note,上面写着:“编辑联系人时所有属性都可见”。所以我认为当你创建联系人时被认为是编辑联系人的一个特例。
我使用 displayedPropertyKeys
只是为了显示联系人,在这种情况下效果很好。
希望对您有所帮助!