I am creating an app with Swift4.
V Place the Get button on the ViewController and press this button to open the iPhone contact list.
②Select any person (multiple people) from the list, check, and press Done to open an alert and display the selected person.
③Tap more people from there to see their name, mobile number, and email address.
④Press OK on the alert in の to return to ViewController.
⑤If you press the Get Me button on ViewController again to open the iPhone contact list, the check will not be missed.
I would like to Uncheck the CNContactPickerViewController checked with 」 in the 」 stage.Or if I initialize the app here, the check will disappear, but I don't know.
//ViewController.swift
// ToAddressBook
// Created by admin on November 13, 2017.
// Copyright © 2017 css. All rights reserved.
import UIKit
import Contacts
import ContactsUI
classViewController:UIViewController, CNContactPickerDelegate, CNContactViewControllerDelegate{
target: [(name:String, email:String, phNo:String)] = [ ]
varnameList: String = [ ]
varcnPicker=CNContactPickerViewController()
func contactPickerDidCancel(_picker:CNContactPickerViewController){
print("ContactPicker Cancelled"")
}
// Initialize the app???
func applicationWillEnterForeground (application:UIApplication) {
let storyboard = UIStoryboard (name: "Main", bundle:nil)
storyboard.instantiateViewController(withIdentifier: "MainViewController")
}
// Show selected person as alert
func displayNameList(mycount:Int){
self.cnPicker.dismiss(animated:false){
print("It's closed?")
}
let alert = UIAlertController(
title: "Selected person",
message: ",
preferredStyle:.alert)
// Add action to alert (action name is selected)
for i in 0..<mycount {
alert.addAction(
UIAlertAction(
title: "\(nameList[i])",
style:.default,
handler: {(action)->Void in
// Each action (each person's information is taken from a tuple array and displayed as an alert)
letkekkaAlert=UIAlertController(
title:self.target[i].name,
message: "\(self.target[i].email)"+"\n"+"\(self.target[i].phNo)",
preferredStyle:.alert)
kekkaAlert.addAction(UIAlertAction(
title: "OK",
style:.default,
handler: {(action)->Void in
// I want to cancel the check or initialize the application
// Process here?
// Initialize target
self.target=[]
}))
self.present(kekkaAlert, animated:true, completion:nil)
print("target name=\(self.target[i].name)")
print("target email=\(self.target[i].email)")
print("targetphoneNumber=\(self.target[i].phNo)")
})
)
}
// Add "Cancel" to alert
alert.addAction(
UIAlertAction(
title: "Cancel",
style:.cancel,
handler:nil)
)
// Alert View
self.present(
alert,
animated —true,
completion: {
// print("Alert displayed")
}
)
}
// Press the "Done" button to select
func contactPicker(_picker:CNContactPickerViewController, didSelect contacts:[CNContact]){
contacts.forEach {contact in
let names = contact.giveName +" + contact.familyName
let emails=(contact.emailAddresses[0].value as!String)
letphoneNo=(contact.phoneNumber[0].value as!CNPhoneNumber).value(forKey: "digits") as! String
print("email is=\(emails)")
print("phoneNois=\(phoneNo)")
nameList.append(names)
// Put it in the tuple array "target"
target.append ((name:names, email:emails, phNo:phoneNo))
print("\"(target)"")
}
let count = nameList.count
print("nameList=\(nameList)")
displayNameList (mycount:count)
}
// Press the "List" button.Get Contacts
@ IBAction funcgetMyContact(_sender:Any){
nameList = [ ]
// Display CNContactPickerViewController to select a contact
// When you do this, the first time you see a dialog that says, "Application is asking for access to your contact."
// Requires permission to access the contact.If you allow it, you will see a list of contacts registered on your iPhone.
//let cnPicker=CNContactPickerViewController()
cnPicker.delegate=self
self.present(cnPicker, animated:true, completion:nil)
}
override func viewDidLoad(){
super.viewDidLoad()
}
override funcdidReceiveMemoryWarning(){
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@objc func commitButtonTapped(){
self.view.endEditing(true)
}
}
Screen 1
Screen 2
Screen 3
Screen 4
Screen 5
@IBAction funcgetMyContact(_sender:Any){} was solved by letting cnPicker=CNContactPickerViewController() every time.Thank you.
© 2024 OneMinuteCode. All rights reserved.