#swift #navigationbar
#swift #панель навигации
Вопрос:
Я не могу добавить панель навигации из раскадровки, но мне это нужно. Я пытался так:
let navBar: UINavigationBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: 44))
self.view.addSubview(navBar);
let navItem = UINavigationItem(title: "SomeTitle");
let doneItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Done, target: nil, action: "selector");
navItem.leftBarButtonItem = doneItem;
navBar.setItems([navItem], animated: false);
Но я получаю что-то вроде этого:
хорошо, как установить навигационную панель по центру и зафиксировать размер, как у обычной навигационной панели в представлении?
Я пробовал даже это:
let xConstraint = NSLayoutConstraint(item: navBar, attribute: .CenterX, relatedBy: .Equal, toItem: self.view, attribute: .CenterX, multiplier: 1, constant: 0)
NSLayoutConstraint.activateConstraints([xConstraint])
self.view.addConstraint(xConstraint)
это не работает
Комментарии:
1. Вы уверены, что
view
то, что вы вызываете, занимает всю ширину экрана?2. попробуйте встроить свой ViewController в UINavigationController в раскадровке
3. вы можете создать NavigationController программно и нажать или представить свой контроллер с помощью этого контроллера навигации.
Ответ №1:
Вы можете создать новый NavigationController и представить желаемый контроллер. Я предполагаю, что вы включены viewController1
и хотите представить viewController2
. Итак, вы можете сделать что-то вроде приведенного ниже
let navigationController = UINavigationController(rootViewController: viewController2())
navigationController.navigationBar.backgroundColor = UIColor.clearColor()
navigationController.navigationBar.tintColor = UIColor.clearColor()
navigationController.navigationBar.translucent = true
// customize according to your need
self.presentViewController(navigationController, animated: true, completion: {
})