0

モーダルコントローラーとして問題なく InAppSettingsKit を実装しました。すべて順調です。それから私は派手になりたかったです!

カスタム ビュー コントローラーの 1 つにコンテナーを追加し、埋め込みセグエ コントローラーのターゲットを TableViewController にしました。すべて正常に表示されます。子ペインも問題なく表示されます。しかし、私の問題が始まります。子ペインに移動すると、元に戻せません。つまり、ナビゲーション コントロールはありません。

ナビなし

ほとんどの人が子ペインの表示に問題を抱えている他のすべての投稿を読みましたが、これは私にとっては問題ではありません。ナビゲーション コントロールがないため、それらから戻ることはできません。

重要かどうかはわかりませんが、コンテナーを使用したカスタム ビュー コントローラーはタブ ビュー コントローラーの一部です。おそらく、これがナビゲーション コントロールがない理由でしょうか? 他の誰かがこれを経験していますか、または簡単な修正がありますか? シンプルなもの、どこかの設定が欠けているようです。

私はこれに取り組み続け、何かを見つけたら更新します!

アップデート

私たちのアプリケーションは、すぐにナビゲーション バーを非表示にします。これを非表示にすることで、ナビゲートできるようになりました。これは理にかなっています。これを回避する唯一の方法は、子ペインで viewWillAppear/viewDidDisappear をオーバーライドして、ナビゲーション ペインを有効/無効にすることのようです。カスタム サブビュー。これらのオーバーライドを追加するだけで InAppSettingsKit から拡張できるクラスがあるかどうかを調べようとしています。

4

1 に答える 1

0

ここで私がしなければならなかったことを見つけることができます: https://github.com/futuretap/InAppSettingsKit/issues/277

また、私のユース ケースは、InAppSettingKit を既存のビュー コントローラー内のコンテナーで動作させることであり、以前は非表示になっていたナビゲーション バーをコンテナーに持たせたかったことにも注意してください。

これがあなたのユースケースである場合は、読み進めてください...

車輪の再発明は本当にしたくなかったので、既存のIASKAppSettingsViewControllerクラスのサブクラスを作成し、適切な表示/非表示機能を追加しました。

これは、必要な場所に基本クラスを拡張する方法かもしれないと思います。基本的な設定が必要なだけで、それを実行できます!

これが他の誰かに役立つことを願っています!!

class CustomSubviewController: IASKAppSettingsViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    override init() {
        super.init()
    }

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

    override init(style: UITableViewStyle) {
        super.init(style: style)
    }

    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
    }

    func myinit (file: NSString, specifier: IASKSpecifier) -> CustomSubviewController {
        var vc = CustomSubviewController()

        vc.showDoneButton = false;
        vc.showCreditsFooter = false; // Does not reload the tableview (but next setters do it)
        vc.delegate = self.delegate;
        vc.settingsStore = self.settingsStore;
        vc.file = specifier.file();
        vc.hiddenKeys = self.hiddenKeys;
        vc.title = specifier.title();

        return vc
    }

    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)
        self.navigationController?.setNavigationBarHidden(false, animated: animated)

    }

    override func viewWillDisappear(animated: Bool) {
        super.viewWillDisappear(animated)
        self.navigationController?.setNavigationBarHidden(true, animated: animated)
    }

}
于 2015-02-05T17:11:59.747 に答える