私はビューコントローラにテーブルビューを埋め込み、埋め込みテーブルコントローラから親ビューコントローラの保存ボタンにアクセスしようとしています。以下のプロトコルを使用している場合:スウィフトサブクラスとプロトコル
私tableviewcontrollerサブクラス(SettingsController)はsaveButtonメソッドを持っており、私は次のコードを使用している場合、それは動作します。しかし
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
super.prepare(for: segue, sender: sender)
guard let optionsTable = segue.destination as? SettingsController else {
fatalError("Unexpected destination: \(segue.destination)")
}
optionsTable.saveButton = self.saveButton
}
を、私が使用して、次の実装を使用しようとしていますプロトコル:
protocol SettingsOptionsTable {
var saveButton: UIBarButtonItem? {get set}
}
SettingsControllerは、SettingsOptionsTableプロトコルを実装しています。しかし、以下のコード:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
super.prepare(for: segue, sender: sender)
guard let optionsTable = segue.destination as? SettingsOptionsTable else {
fatalError("Unexpected destination: \(segue.destination)")
}
optionsTable.saveButton = self.saveButton
}
は私にコンパイルエラー与える:私はなぜ理解していない
:「プロパティに割り当てることができません 『optionsTable』 『を聞かせて』一定です」。 optionsTableオブジェクトは定数であり、プロトコルを実装しており、プロパティを割り当てます。 "guard let"を "guard var"に変更するとコードが機能します。 誰でもこれを私に説明できますか?
おかげ