如何在IOS 9(Swift)中的下一个视图控制器中显示所选联系人

如何在IOS 9(Swift)中的下一个视图控制器中显示所选联系人,ios,Ios,在Swift中,我使用联系人界面框架显示了手机中的联系人,并选择了特定联系人。选择后,我需要在下一个视图控制器中显示所选联系人。 此代码属于contactUI框架中的显示联系人。当我们运行此代码时,它会用两个按钮显示手机上的所有联系人,如“完成”或“取消”。当我选择联系人并按下“完成”按钮时,它会导航到另一个视图控制器Plz为我提供解决方案 enter code here // // ViewController.swift // Spliting // // Created by Vij

在Swift中,我使用联系人界面框架显示了手机中的联系人,并选择了特定联系人。选择后,我需要在下一个视图控制器中显示所选联系人。 此代码属于contactUI框架中的显示联系人。当我们运行此代码时,它会用两个按钮显示手机上的所有联系人,如“完成”或“取消”。当我选择联系人并按下“完成”按钮时,它会导航到另一个视图控制器Plz为我提供解决方案

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)
}