InAppSettingsKit内部容器 - 导航问题

时间:2015-01-08 16:44:45

标签: ios iphone inappsettingskit

我已经将InAppSettingsKit作为模态控制器实现了。一切都很好。然后我想得到幻想!

我在我的一个自定义视图控制器中添加了一个Container,并使嵌入式segue控制器成为TableViewController的目标,一切都显示得很好。即使是儿童窗格也没有问题。但后来我的问题开始了,当我去儿童窗格时,我无法回来。也就是说没有导航控件!!

no nav

我已经阅读了所有其他帖子,其中大多数人都有显示儿童窗格的问题,这对我来说不是问题,因为没有导航控件,我无法从他们那里回来。

我不确定它是否重要,但我的自定义视图控制器与容器是标签视图控制器的一部分。也许这就是为什么没有导航控件?有没有其他人经历过这个或快速修复?好像我错过了一些简单的东西,在某个地方设置。

如果我想出来的话,我会继续努力并更新!

更新

我们的应用程序会立即隐藏导航栏。我发现,通过取消隐藏,我现在能够导航,这是有道理的。似乎唯一的办法就是覆盖子窗格中的viewWillAppear / viewDidDisappear以启用/禁用导航窗格......这看起来像是一个真正的痛苦(没有双关语意),因为我将不得不创建自定义子视图。试图弄清楚是否有一个类我可以从InAppSettingsKit扩展到只添加这些覆盖。

1 个答案:

答案 0 :(得分: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)
    }

}