2017-05-01 15 views
-2

私は連絡先選択機能でemailという名前の変数を持っています。 MFMailComposeViewControllerIBAction関数でその変数を使用しようとしています。私はtoRecipientにそれを適用したいと思います。別の関数の変数を使ってどうすればいいですか?他の関数swiftの変数を使用するにはどうすればよいですか?

import UIKit 
import Contacts 
import ContactsUI 
import MessageUI 

class ViewController: UIViewController, CNContactPickerDelegate, MFMailComposeViewControllerDelegate, UITextFieldDelegate { 
    //Message Setup 
    @IBOutlet weak var nameTextField: UITextField! 
    @IBOutlet weak var companyTextField: UITextField! 
    @IBOutlet weak var lblDetails: UILabel! 

    @IBAction func btnSelectEmployee(_ sender: Any) { 
     let entityType = CNEntityType.contacts 
     let authStatus = CNContactStore.authorizationStatus(for: entityType) 

     if authStatus == CNAuthorizationStatus.notDetermined { 
      let contactStore = CNContactStore.init() 
      contactStore.requestAccess(for: entityType, completionHandler: { (success, nil) in 
       if success { 
        self.openContacts() 
       } 
       else { 
        print("Not Authorized") 
       } 
      }) 
     } 
     else if authStatus == CNAuthorizationStatus.authorized { 
      self.openContacts() 
     } 
    } 

    func openContacts() { 
     let contactPicker = CNContactPickerViewController.init() 

     contactPicker.delegate = self 

     self.present(contactPicker, animated: true, completion: nil) 
    } 

    func contactPickerDidCancel(_ picker: CNContactPickerViewController) { 
     picker.dismiss(animated: true) { 
     } 
    } 

    func contactPicker(_ picker: CNContactPickerViewController, didSelect contact: CNContact) { 
     //When user select any contact 

     let fullName = "\(contact.givenName) \(contact.familyName)" 
     var email = "Not Available" 

     if !contact.emailAddresses.isEmpty { 
      let emailString = (((contact.emailAddresses[0] as AnyObject).value(forKey: "labelValuePair") as AnyObject).value(forKey: "value")) 

      email = emailString! as! String 

      self.lblDetails.text = "\(fullName)\n \(email)" 
     } 
    } 

    //Mail View 

    @IBAction func sendAction(_ sender: Any) { 
     let mailVC = MFMailComposeViewController() 
     mailVC.mailComposeDelegate = self 
     mailVC.setSubject("Hello. You have a visitor in the lobby.") 

     let mailContent = "\(nameTextField.text!) from \(companyTextField.text!) is here to see you." 

     mailVC.setMessageBody(mailContent, isHTML: false) 

     let toRecipient = "[email protected]" 

     mailVC.setToRecipients([toRecipient]) 

     self.present(mailVC, animated: true) { 
      self.nameTextField.text = "" 
      self.companyTextField.text = "" 
     }    
    } 

    func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) { 
     controller.dismiss(animated: true, completion: nil) 
    } 

    func textFieldShouldReturn(_ textField: UITextField) -> Bool { 
     nameTextField.resignFirstResponder() 
     companyTextField.resignFirstResponder() 

     return true 
    } 
} 
+0

を入力してください。 – matt

答えて

0

あなたが好きな場所今、あなたはあなたのクラス内の変数を使用することができます

var email = "Not Available" 

    func contactPicker(_ picker: CNContactPickerViewController, didSelect contact: CNContact) { 

    //When user select any contact 

    let fullName = "\(contact.givenName) \(contact.familyName)" 




    if !contact.emailAddresses.isEmpty { 

     let emailString = (((contact.emailAddresses[0] as AnyObject).value(forKey: "labelValuePair") as AnyObject).value(forKey: "value")) 

     email = emailString! as! String 

     self.lblDetails.text = "\(fullName)\n \(email)" 
    } 

} 

関数の外VARを定義します。

詳細については、Apple Documentation

関連する問題