1

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

let navController = UINavigationController(navigationBarClass: CustomNavigationBar.self, toolbarClass: nil)

однако я хочу, чтобы иметь возможность создать собственный UINavigationController (программно), который уже устанавливает свою собственную панель навигации в своем классе навигационной панели. Я видел, как это сделать по этой ссылке, но кажется немного устаревшим (2012) и «hacky AF» - https://stackoverflow.com/a/9610801/2654425. Я знаю, как это сделать в «Storyboard», установив класс навигационной панели UINavigationController, но я хотел бы, чтобы это было сделано программно в моем пользовательском контроллере UINavigation.

Вот основной UINavigationBar и UINavigationController Подкласс:

class CustomNavigationBar: UINavigationBar { 

    override init(frame: CGRect) { 
     super.init(frame: frame) 

    } 
    required init(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder)! 


    } 

    override func draw(_ rect: CGRect) { 
     self.backgroundColor = UIColor.red 
    } 


} 

class CustomNavigationController: UINavigationController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Do any additional setup after loading the view. 

    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


} 

Я не уверен, где установить пользовательские панели навигации. Любая помощь приветствуется. :)

+0

попытаться добавить в viewDidLayoutSubViews Method. –

ответ

0

Вы должны установить, когда вы создаете экземпляр вашего подкласса UINavigationController. В частности, UINavigationController.init (navigationBarClass: AnyClass ?, toolbarClass: AnyClass?). См. UINavigationController в документации Apple.