メインのViewControllerはUINavigationControllerサブクラスに組み込まれており、VCにはnibからロードされたサブビューがあります。サブビューはMenuViewと呼ばれ、他のVCにリンクするUIButtonを含みます。rootVC Subview(Nibからロードされたサブビュー)からUINavigationControllerにアクセス
メインViewControllerの操作性を損なうことなく、これらのボタンをすべて、メニューの開閉をアニメーションするペン先からロードするサブビューに入れました。
しかし、私はこれらから他のビューコントローラを紹介したいと思います。時には "Modally"、時には "Show"もあります。私がやったことはうまくいくと思われますが、これが問題ないかどうか、あるいは私が気付いていない(メモリーリークなどの原因となる強力な参照サイクルのような)望ましくない影響を引き起こしたかどうかを知りたいだけです。それとももっと良い方法がありますか?
いくつかのコード:MenuView.swiftで
ViewController.swiftでclass MenuView: UIView {
var navigationController = CustomNavigationController()
func combinedInit(){
NSBundle.mainBundle().loadNibNamed("MenuViewXib", owner: self, options: nil)
addSubview(mainView)
mainView.frame = self.bounds
}
@IBAction func optionsAction(sender: AnyObject) {
self.navigationController.performSegueWithIdentifier("presentOptions", sender: self)
}
menuView.navigationController = self.navigationController as! CustomNavigationController
お返事ありがとうございます。デリゲートを使用することを考えていたのは、かなり理解しやすいからです。デリゲートの場合は、presentViewController(segueKey:String)のような関数を使ってプロトコルを作成し、その関数をメインのviewcontrollerに置き、menuView.delegateをselfに割り当てます。正しい? –
はい、そうですね。私は自分の答えを更新したので、デリゲートの使い方を知ることができます。 – ozgur
素晴らしいです、ありがとうございます。簡単な質問:なぜ、menuViewDidClickメソッドのViewControllerの引数として送信者を渡す必要がありますか? –