【问题标题】:InAppSettingsKit Inside Container - Navigation Issues容器内的 InAppSettingsKit - 导航问题
【发布时间】:2015-01-08 16:44:44
【问题描述】:

我已经将 InAppSettingsKit 实现为模态控制器,没有问题。一切都很好。然后我想变得花哨!

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

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

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

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

更新

我们的应用程序立即隐藏了导航栏。我发现通过取消隐藏我现在可以导航,这是有道理的。似乎解决此问题的唯一方法是在子窗格中覆盖 viewWillAppear/viewDidDisappear 以启用/禁用导航窗格......现在看起来真的很痛苦(没有双关语),因为我必须创建自定义子视图。试图弄清楚是否有一个类我可以从 InAppSettingsKit 扩展来添加这些覆盖。

【问题讨论】:

  • 请将您的解决方案发布为您可以勾选正确的答案。这样问题就不会保持开放。另外我认为当你在其中所做的只是调用 super 时,你不需要重写方法。
  • 感谢您的建议。正如我的代表所显示的那样,我对 StackOverflow 还是很陌生。我会将更新移动到答案中。感谢您的建议。

标签: ios iphone inappsettingskit


【解决方案1】:

你可以在这里找到我要做的事情: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)
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 2017-09-07
    • 2011-07-16
    • 1970-01-01
    • 1970-01-01
    • 2017-06-25
    • 2011-09-04
    相关资源
    最近更新 更多