私はプロトコルをセットアップし、2つのビューコントローラの間で無駄に委任するために、いくつかのチュートリアルとスタックオーバーフローに関する質問を試しました。私はかなり新しくて迅速なので、私は何がうまくいかないのか分からない。私はメインのuiviewcontrollerとそれに埋め込まれたuitableviewcontrollerを持っています。私は親に情報を返すためにuitableviewcontrollerが必要です。 )今委任.sendMessageを(uiviewcontrollerとuitableviewcontrollerの間で通信するSwift代理人
//Parent ViewController
class parentViewController: UIViewController, childViewControllerDelegate {
func sendMessage(controller: childViewController, text: String) {
print("Sent message: " + text)
}
}
と
//Child ViewController
protocol childViewControllerDelegate: class {
func sendMessage(controller: childViewController, text: String)
}
class childViewController: UITableViewController {
weak var delegate: childViewControllerDelegate?
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
if (indexPath.row == 0) {
delegate?.sendMessage(self, text: "Hello Parent")
}
}
}
実行されていません:?これは私がコードの面で持っているものです。デリゲートは無制限で、決して設定しないと仮定します。私が見たいくつかの提案では、親ビューコントローラに代理人を設定する必要があります。このコードはコンパイルされますが、致命的なエラーのランタイムエラーを持っている
//Parent ViewController
class parentViewController: UIViewController, childViewControllerDelegate {
weak var secondViewController: childViewController!
override func viewDidLoad() {
super.viewDidLoad()
secondViewController.delegate = self
}
func sendMessage(controller: childViewController, text: String) {
print("Sent message: " + text)
}
}
:
'' ''私は仮定します - どうしてあなたは確かにデバッガを使うのではなく何かを仮定していますか? – nhgrif