簡體   English   中英

如何在Swift3中從UIView傳遞數據UIViewContoller

[英]How can I passing data UIViewContoller from UIView in swift3

如何從uiview傳遞數據uiviewController

我正在使用功能,但無法正常工作

協議名稱為startcalldelegate,函數名稱為startcall

UIView代碼

protocol StartCallDelegate: class {
func startCall(localNickname :String, remoteNickname :String)}

class CardView: UIView {

let managedObjectContext = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext

weak var delegate: CardViewDelegate?
weak var socketdelegate: StartCallDelegate?

@IBOutlet weak var UserPhoto: UIImageView!
@IBOutlet weak var UserNickName: UILabel!
@IBOutlet weak var UserAge: UILabel!
@IBOutlet weak var UserPeople: UILabel!

var localNickname: String = ""
var remoteNickname: String = ""

@IBAction func SendMessage(_ sender: Any) {
    print("SendMessage")

    //print(localNickName)
    //print(UserNickName.text!)
}

@IBAction func SendVideoCall(_ sender: Any) {
    print("SendVideoCall")

    let entityDescription = NSEntityDescription.entity(forEntityName: "Profile", in: managedObjectContext)
    let request = NSFetchRequest<NSFetchRequestResult>()
    request.entity = entityDescription

    do {
        let objects = try managedObjectContext.fetch(request)

        if objects.count > 0 {
            let match = objects[0] as! NSManagedObject
            localNickname = match.value(forKey: "nick") as! String

        } else {
            print("Nothing founded")
        }
    } catch {
        print("error")
    }

    remoteNickname = UserNickName.text!

    socketdelegate?.startCall(localNickname: localNickname, remoteNickname: remoteNickname)
    delegate?.VideoChatSegue()

}

}

UIViewcontroller代碼

class ViewController: UIViewcontroller, StartCallDelegate {
 var localNickname: String = ""
 var remoteNickname: String = ""

 override func viewDidLoad() {
     super.viewDidLoad()
     print(localNickname)
     print(remoteNickname)
}

    func startCall(localNickname: String, remoteNickname: String) {
    print("Action startcall func")
    self.localNickname = localNickname
    self.remoteNickname = remoteNickname
}

startCall func無法正常工作

您需要在viewcontroller的ViewDidLoad中定義委托

 let objOardView = CardView() // this is only test purpose
 objOardView.socketdelegate = self

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM