InAppSettingsKit 容器内部 - 导航问题
InAppSettingsKit Inside Container - Navigation Issues
我已经毫无问题地将 InAppSettingsKit 实现为模态控制器。那里一切都很好。那我想变漂亮!
我向我的自定义视图控制器之一添加了一个容器,并使嵌入式 segue 控制器以 TableViewController 为目标,一切都显示得很好。即使是子窗格也可以毫无问题地显示。但是后来我的问题开始了,当我转到子窗格时我无法返回。也就是说没有导航控件!!
我已经阅读了所有其他帖子,其中大多数人在显示子窗格时遇到问题,这对我来说不是问题,我只是无法从他们那里回来,因为没有导航控件。
我不确定它是否重要,但我的带有容器的自定义视图控制器是选项卡视图控制器的一部分。也许这就是为什么没有导航控件?还有其他人遇到这种情况或有快速修复方法吗?好像我缺少一些简单的东西,某个地方的设置。
我会继续努力,如果我想通了会更新!
更新
我们的应用程序立即隐藏了导航栏。我发现通过取消隐藏它我现在可以导航,这是有道理的。似乎解决这个问题的唯一方法是将子窗格中的 viewWillAppear/viewDidDisappear 覆盖为 enable/disable 导航窗格......现在看起来真的很痛苦(没有双关语意)因为我'您必须创建自定义子视图。试图弄清楚是否有 class 我可以从 InAppSettingsKit 扩展以仅添加这些覆盖。
你可以在这里找到我必须做的事情:https://github.com/futuretap/InAppSettingsKit/issues/277
另外,请注意我的用例是让 InAppSettingKit 在现有视图控制器内的容器中工作,我希望它有一个以前隐藏的导航栏。
如果这是您的用例,请继续阅读...
我真的不想重新发明轮子,所以我创建了一个已经存在的 IASKAppSettingsViewController class 的子class 然后添加了适当的 appear/disappear 功能。
我想这可能是扩展基础 class 任何你想要的地方的方法,你只需要设置基础然后就可以开始了!
希望这对其他人有帮助!!
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)
}
}
我已经毫无问题地将 InAppSettingsKit 实现为模态控制器。那里一切都很好。那我想变漂亮!
我向我的自定义视图控制器之一添加了一个容器,并使嵌入式 segue 控制器以 TableViewController 为目标,一切都显示得很好。即使是子窗格也可以毫无问题地显示。但是后来我的问题开始了,当我转到子窗格时我无法返回。也就是说没有导航控件!!
我已经阅读了所有其他帖子,其中大多数人在显示子窗格时遇到问题,这对我来说不是问题,我只是无法从他们那里回来,因为没有导航控件。
我不确定它是否重要,但我的带有容器的自定义视图控制器是选项卡视图控制器的一部分。也许这就是为什么没有导航控件?还有其他人遇到这种情况或有快速修复方法吗?好像我缺少一些简单的东西,某个地方的设置。
我会继续努力,如果我想通了会更新!
更新
我们的应用程序立即隐藏了导航栏。我发现通过取消隐藏它我现在可以导航,这是有道理的。似乎解决这个问题的唯一方法是将子窗格中的 viewWillAppear/viewDidDisappear 覆盖为 enable/disable 导航窗格......现在看起来真的很痛苦(没有双关语意)因为我'您必须创建自定义子视图。试图弄清楚是否有 class 我可以从 InAppSettingsKit 扩展以仅添加这些覆盖。
你可以在这里找到我必须做的事情:https://github.com/futuretap/InAppSettingsKit/issues/277
另外,请注意我的用例是让 InAppSettingKit 在现有视图控制器内的容器中工作,我希望它有一个以前隐藏的导航栏。
如果这是您的用例,请继续阅读...
我真的不想重新发明轮子,所以我创建了一个已经存在的 IASKAppSettingsViewController class 的子class 然后添加了适当的 appear/disappear 功能。
我想这可能是扩展基础 class 任何你想要的地方的方法,你只需要设置基础然后就可以开始了!
希望这对其他人有帮助!!
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)
}
}