0

Так что я пытаюсь создать приложение, но я стараюсь избегать использования раскадровки. Следовательно, просто используя быстрые файлы вместе с XIB-файлами.Программно создать навигационный вид

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

В AppDelegate у меня есть:

let homeVC = HomeViewController() 
let rootVC = UINavigationController(rootViewController: homeVC) 

window!.rootViewController = rootVC 
window!.makeKeyAndVisible() 

мой взгляд в настоящее время совершенно пуст, но с основным экраном «Вид», который приходит с созданием нового файла XIB. Я установил его размер freeform, и все остальные вещи, такие как верхняя панель, строка состояния Inferred.

В моей HomeViewController.swift у меня есть:

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Do any additional setup after loading the view. 
    let nib = UINib(nibName: "HomeView", bundle: nil) 
    let objects = nib.instantiateWithOwner(self, options: nil) 
    self.view = objects[0] as! UIView; 

    print(self.navigationController) 

    // customize navigation bar 
    let settingsImage = UIImage(named: "settingsWheelBlack.png") 
    let settingsNavItem = UIBarButtonItem(image: settingsImage, style: UIBarButtonItemStyle.Plain, target: nil, action: Selector("selector")) 
    let addStuffItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Add, target: nil, action: Selector("selector")) 

    self.navigationController?.navigationItem.title = "Home" 
    self.navigationController?.navigationItem.leftBarButtonItem = settingsNavItem 
    self.navigationController?.navigationItem.rightBarButtonItem = addStuffItem 

    print(self.navigationController?.navigationBar) 
    print(self.navigationController?.navigationItem.title) 
} 

Но когда я запустить приложение на панели навигации не отображается. Вот что я пробовал, кроме того, что у меня есть:

  1. Добавить панель управления навигацией в мой XIB и подключить к ней выход IB. Также подключите выход IB к элементу навигации, который уже существует в панели навигации. Затем установите заголовок, а в левой и правой кнопках. Не работает

    1. Задайте заголовок и кнопки в AppDelegate сразу для rootVC, определенных выше. Не работает.

Любые идеи, что я не хватает?

ответ

0

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

In a navigation interface, each content view controller in the navigation stack provides a navigation item as the value of its **navigationItem** property. The navigation stack and the navigation item stack are always parallel: for each content view controller on the navigation stack, its navigation item is in the same position in the navigation item stack.

Так что я оставил свой AppDelegate код, как это и изменил мне viewDidLoad функцию:

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Do any additional setup after loading the view. 
    let nib = UINib(nibName: "EventsHomeView", bundle: nil) 
    let objects = nib.instantiateWithOwner(self, options: nil) 
    self.view = objects[0] as! UIView; 

    print(self.navigationController) 

    // customize navigation bar 
    let settingsImage = UIImage(named: "settingsWheelBlack.png") 
    let settingsNavItem = UIBarButtonItem(image: settingsImage, style: UIBarButtonItemStyle.Plain, target: nil, action: Selector("selector")) 
    let addStuffItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Add, target: nil, action: Selector("selector")) 

    // Each VC within a navigation controller has it's own navigationItem property that the underlying navigation controller uses to show in the navigationBar 
    self.navigationItem.title = "Home" 
    self.navigationItem.leftBarButtonItem = settingsNavItem 
    self.navigationItem.rightBarButtonItem = addStuffItem 
} 

и альт!

 Смежные вопросы

  • Нет связанных вопросов^_^