0

我已经毫无问题地实现了 InAppSettingsKit 作为模态控制器。一切都很好。然后我想变得花哨!

我在我的一个自定义视图控制器中添加了一个容器,并使嵌入式 segue 控制器以 TableViewController 为目标,一切都显示得很好。即使是子窗格也可以毫无问题地显示。但是随后我的问题开始了,当我转到子窗格时,我无法返回。也就是说没有导航控件!!

没有导航

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

我不确定它是否重要,但我的带有 Container 的自定义视图控制器是选项卡视图控制器的一部分。也许这就是为什么没有导航控件的原因?有其他人遇到这种情况或有快速修复吗?好像我错过了一些简单的东西,一个地方的设置。

如果我发现了什么,我会继续努力并更新!

更新

我们的应用程序立即隐藏了导航栏。我发现通过取消隐藏我现在可以导航,这是有道理的。似乎解决此问题的唯一方法是覆盖子窗格中的 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 回答