Я собираюсь использовать аналогичные свойства на всех моих контроллерах навигации в разных контроллерах представления, за исключением некоторых элементов навигации и, очевидно, заголовков.swift - расширение UINavigationController не работает
Я сделал планирование расширения, чтобы иметь возможность вызвать его и установить мои настройки по умолчанию; однако он ничего не делает. Код действительно работает, когда я просто помещаю его в фактический класс, но не тогда, когда я вызываю SetDefaults.
Расширение:
extension UINavigationController {
func setDefaults(titleText: String){
let appDel = UIApplication.sharedApplication().delegate as! AppDelegate
//Set title label
let label = UILabel()
label.font = UIFont(name: appDel.regularDefaultFont, size: 16)
label.text = titleText
label.kern(1.0)
label.sizeToFit()
self.navigationItem.titleView = label
//Set white background tint color
self.navigationBar.barTintColor = UIColor.whiteColor()
//Set navigation bar bottom line
let bottomBorderRect = CGRect(x: 0, y: UIScreen.mainScreen().bounds.height, width: UIScreen.mainScreen().bounds.width, height: 1)
let bottomBorderView = UIView(frame: bottomBorderRect)
bottomBorderView.backgroundColor = UIColor(r: 250, g: 250, b: 250)
navigationBar.addSubview(bottomBorderView)
}
}
вызовы в SetDefaults из класса с navigationcontroller:
self.navigationController.SetDefaults("Login")
Вы можете установить контрольную точку в расширении и посмотреть, является ли это достигнуто? – kabiroberai
убедитесь, что вы на самом деле вызываете 'setDefaults' на правый навигационный контроллер. Если вы используете UISplitViewController, свойство собственного навигационного контроллера контроллера просмотра может быть не на экране – Luke
kabiroberai, я попробовал это, и он туда попал. @Luke Я вызываю setDefaults в контроллере представления, который я только что показал. Это верно? Ознакомьтесь с моим комментарием к приведенному ниже ответу, чтобы увидеть код, который я использую, чтобы показать контроллер вида. – Walker