如何在IOS 9(Swift)中的下一个视图控制器中显示所选联系人
在Swift中,我使用联系人界面框架显示了手机中的联系人,并选择了特定联系人。选择后,我需要在下一个视图控制器中显示所选联系人。 此代码属于contactUI框架中的显示联系人。当我们运行此代码时,它会用两个按钮显示手机上的所有联系人,如“完成”或“取消”。当我选择联系人并按下“完成”按钮时,它会导航到另一个视图控制器Plz为我提供解决方案如何在IOS 9(Swift)中的下一个视图控制器中显示所选联系人,ios,Ios,在Swift中,我使用联系人界面框架显示了手机中的联系人,并选择了特定联系人。选择后,我需要在下一个视图控制器中显示所选联系人。 此代码属于contactUI框架中的显示联系人。当我们运行此代码时,它会用两个按钮显示手机上的所有联系人,如“完成”或“取消”。当我选择联系人并按下“完成”按钮时,它会导航到另一个视图控制器Plz为我提供解决方案 enter code here // // ViewController.swift // Spliting // // Created by Vij
enter code here
//
// ViewController.swift
// Spliting
//
// Created by Vijayasrivudanti on 01/11/17.
// Copyright © 2017 Vijayasrivudanti. All rights reserved.
//
import UIKit
import ContactsUI
class ViewController: UIViewController ,CNContactPickerDelegate{
let contactStore = CNContactStore()
var results:[CNContact] = []
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func contact(_ sender: Any) {
//let dataArray = NSMutableArray()
let cnPicker = CNContactPickerViewController()
cnPicker.delegate = self
self.present(cnPicker, animated: true, completion: nil)
do {
try contactStore.enumerateContacts(with: CNContactFetchRequest(keysToFetch: [CNContactGivenNameKey as CNKeyDescriptor, CNContactFamilyNameKey as CNKeyDescriptor, CNContactMiddleNameKey as CNKeyDescriptor, CNContactEmailAddressesKey as CNKeyDescriptor,CNContactPhoneNumbersKey as CNKeyDescriptor])) {
(contact, cursor) -> Void in
self.results.append(contact)
///let data = Data(name: contact.givenName)
//self.dataArray?.addObject(data)
}
}
catch
{
print("Handle the error please")
}
}
func contactPicker(_ picker: CNContactPickerViewController, didSelect contacts: [CNContact]) {
contacts.forEach { contact in
for number in contact.phoneNumbers {
print("The number of \(contact.givenName) is: \(number.value)")
}
}
}
func contactPickerDidCancel(_ picker: CNContactPickerViewController) {
print("Cancel Contact Picker")
}
}
ViewController.h
@interface ViewController : UIViewController<UITableViewDataSource,UITableViewDelegate>
{
IBOutlet UITableView*listTblView;
}
@property(nonatomic,strong)IBOutlet UITableView*listTblView;
@property(nonatomic,strong)IBOutlet UIButton*selectAll;
-(IBAction)addButtonPressed:(UIButton *)sender;
-(IBAction)selectAndDeselectAll:(id)sender;
已将用户默认设置中的选定项保存在中
[[NSUserDefaults standardUserDefaults]setObject:selectedBtnArray forKey:@"test"];
[[NSUserDefaults standardUserDefaults]synchronize];
在NextViewController中,在viewDidLoad中检索用户默认值
NSArray *arr = [[NSUserDefaults standardUserDefaults] objectForKey:@"test"];
NSLog(@"comtactList :>>>>%@",arr);
试试这个:
在接收viewController中,初始化另一个结果数组:
var receivingResults:[CNContact] = []
在第一个viewController中:使用prepareForSegue方法将结果数组发送到接收viewController的receivingResults数组:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "REPLACEWITHSEGUEIDENTIFIER" {
if let destination = segue.destination as? REPLACEWITHNAMEOFDESTINATIONVIEWCONTROLLER {
destination.receivingResults = self.results
}
}
}
在@IBAction func contact(\usender:Any)
中获取结果的地方,可以将结果保存到CNContacts数组中
self.results = contact
或
然后如何处理receivingResults数组…plz如果有人知道答案,请帮助我@Lahari Areti:selected contacts保存在数组中,并将该数组传递给下一个view controller。如何在IOS中将所选联系人放入数组您可以在下面的示例中给出一个示例plzplz检查,并让我知道是swift还是objective-c?这是在objective cPlz中,你能用Swift提供给我吗?好的。给我一些时间,我会给你,或者你可以使用这个链接将objective c代码转换成Swift。它会将objc转换为swift,可能会有帮助。好的,当然你可以发布,但你的问题是什么?请清楚地解释一下我在self.results上得到了错误。like无法将“[CNContact]”类型的值分配给“CNContact”类型。我看到@LahariAreti your
self.results.append(contact)
应该是self.results=contact
。它不会转到其他视图控制器。我得到了类似“结果视图控制器不可访问,因为它没有入口点和运行时标识符”的错误。如何从默认联系人视图控制器ui连接到结果视图控制器。每当用户选择联系人并按下默认ContactView控制器中的“完成”按钮时,它都会转到带有所选联系人的结果视图控制器。我们如何在“完成”和“结果”视图控制器之间建立链接?您好@Louis Leunghi@LahariAreti您知道如何在故事板中连接分段吗?(请参阅)您需要在“完成”按钮与ResultViewController之间进行连接,然后设置segue标识符,并在prepareForSegue()中使用该字符串,我在其中放置了REPLACEWITHSEGUEIDENTIFIER。“表演”阶段应足以达到此目的。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "REPLACEWITHSEGUEIDENTIFIER" {
if let destination = segue.destination as? REPLACEWITHNAMEOFDESTINATIONVIEWCONTROLLER {
destination.receivingResults = self.results
}
}
}
self.results = contact
for cont in contact {
self.results.append(cont)
}