classAに定義されたUIViewControllerをclassBから呼び出したい
やりたいことは単純だ。ボタンを押したら画面が繊維する。でも、色々あって自クラスにUIViewController
を定義できないのだ。
ストーリーボードやUIの動作はclassAにあるけど、処理はclassBにあって、clssAでボタンを押した結果、その後の処理はclassBに来るから、そこで、pushViewController
を定義したいけれど、
でもclassBはUIViewControllerを定義できないからpushViewController
を呼び出せない。どう上手に説明していいか分かりません。わからなければ、僕にはもう、どうすルコともできません。
どちらにせよpresentViewController
にしてもpushViewController
にしても、それらはUIViewController
のインスタンスメソッドですから
uivewcontroller
が定義されてないclassではメソッドが呼べないのです。私には、UIViewController
を定義してるclassが必要なのです
どうすればいいかUIViewController
を定義してるclassからUIViewController
へUIViewController
を渡せばいいじゃないか
デリゲートが処理を受け取るイメージで、プロトコルが自分を大きくするイメージなら、もらうイメージです。よくわかりませんか、困ったなあ。
コード
受け取る方(uiviewcontrollerを継承してないclass)
var viewControllerPush : UIViewController? = nil
//変数viewControllerを定義してnillを入れておく
//ここにUIViewControllerが入ってきます
渡す方(uiviewcontrollerを継承してるclass)
var jumpB = ClassB()
override func viewDidLoad() {
super.viewDidLoad()
self.jumpB.viewControllerPush = self
//classBをインスタンス化したjumpBを呼び出して
//classBにはviewControllerPushがいますから
//そこに、self(つまり、classAにはUIViewControllerが定義されてま)を入れる
参考