私は2つのクラスを持っています。 1つのクラスの名前はViewController
で、もう1つのクラスの名前はTabView
です。Swiftはデリゲート経由でプロトコルメソッドを呼び出せません
私の目標は、ViewControllerからTabViewクラスの内側にあるchangeTab()
という関数を呼び出すことです。
どういうわけか、私の代議員が毎回nil
であるため、問題が発生しています。ここで
はViewControllerをのために私のコードです:ここでは
protocol TabViewProtocol: class {
func changeTab()
}
class ViewController: NSViewController {
// delegate
weak var delegateCustom : TabViewProtocol?
override func viewDidLoad() {
print(delegateCustom) // outputs "nil"
}
buttonClickFunction() {
print(delegateCustom) // outputs "nil"
delegateCustom?.changeTab() // doesn't work
}
}
はTabViewのために私のコードです:
class TabView: NSTabViewController, TabViewProtocol {
let myVC = ViewController()
override func viewDidLoad() {
super.viewDidLoad()
myVC.delegateCustom = self
}
func changeTab() {
print("test succeed")
}
}
誰かが私が間違っているのものを私に説明できますか? - 私はデリゲートとプロトコルに新しいです...
を設定しました'ViewController()'を介して - 新しいコントローラは、おそらくアプリケーションの残りの部分とは関係がありません。新しいインスタンスを作成するのではなく、2つのインスタンス間に何らかの接続が必要です。一般的には、インターフェースビルダーを使用して簡単に実行できるはずです。 – luk2302
私の答えを更新しました。これは私が前にそれを持っていた方法です...うまく動作しません – Anokrize
そして、私はそれを使用していないので、interfacebuilder経由で動作していません。 @ luk2302 – Anokrize