2015-01-08 2 views
0

Я внедрил InAppSettingsKit без проблем в качестве модального контроллера. Там все хорошо. Тогда я хотел получить фантазию!InAppSettingsKit Inside Container - Проблемы с навигацией

Я добавил контейнер в один из моих настраиваемых контроллеров представлений и сделал встроенный контроллер segue целью TableViewController, все отображает просто отлично. Даже детские панели показывают без проблем. Но потом моя проблема начинается, когда я иду в дочернее стекло, я не могу вернуться. Иными словами, нет навигационных элементов управления!

no nav

Я прочитал все другие посты, где большинство людей имеют проблемы с указанием дочерних панелей, это не проблема для меня, я просто не могу получить обратно от них нет навигации управления.

Я не уверен, что это важно, но мой пользовательский контроллер представления с Контейнером является частью контроллера представления табуляции. Возможно, поэтому нет навигационных элементов управления? Кто-нибудь еще испытывает это или может быстро исправить? Кажется, что я пропустил что-то простое, где-то в другом месте.

Я буду продолжать работать над этим и обновлять, если я что-то придумаю!

UPDATE

Наше приложение скрывает панель навигации сразу же. Я обнаружил, что, показывая это, я могу теперь перемещаться, что имеет смысл. Казалось бы, единственный способ обойти это можно было бы переопределить viewWillAppear/viewDidDisappear в дочерних панелях, чтобы включить/отключить панели навигации ... которые теперь выглядят как настоящая боль (каламбур не предназначен), потому что мне нужно будет создать настраиваемые подзаголовки. Попытка выяснить, есть ли класс, который я могу расширить из InAppSettingsKit, просто добавить эти переопределения.

+1

Пожалуйста, разместите свое разрешение как ответ, который можно отметить как правильное. Таким образом, вопрос не остается открытым. Также я думаю, что вам не нужно переопределять методы, когда все, что вы делаете в них, вызывает супер. –

+0

Спасибо за предложение. Как показывает мой представитель, я все еще новичок в StackOverflow. Я переведу обновление в ответ. Цените совет. –

ответ

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) 
    } 

}