#ios #swift #xcode #uinavigationcontroller
Вопрос:
Я работал над приложением для iOS и пытаюсь отобразить панель навигации в своем приложении. Я использую раскадровку, чтобы просто работать над некоторым базовым пользовательским интерфейсом, но для другой части, такой как панель навигации, я пытаюсь реализовать ее с помощью кода.
В файл AppDelegate.swift я поместил следующий код.
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil) -> Bool {
window = UIWindow(frame: UIScreen.main.bounds)
UINavigationBar.appearance().tintColor = .black
window?.rootViewController = FirstViewController()
window?.rootViewController?.view.backgroundColor = UIColor.white
window?.makeKeyAndVisible()
return true
}
Однако панель навигации не отображается на FistViewController.
В FirstViewController я также вставил следующий код в функцию viewwillappear для отображения панели навигации.
self.navigationController?.isNavigationBarHidden = false
self.navigationController?.navigationBar.barStyle = .black
Как я уже сказал, у меня есть раскадровка, но я использую ее только для настройки FirstViewController в качестве контроллера isInitialView. У меня также есть табличное представление на FirstViewController, и я могу его видеть, но я не вижу панели навигации.
Поэтому мне было интересно, не ошибся ли я при написании кода для отображения панели навигации…
Кто-нибудь знает, чего мне здесь не хватает?
Ответ №1:
функциональное приложение(приложение: UIApplication, didFinishLaunchingWithOptions запускопции: [NSObject: AnyObject]?) -> Бул {
let viewController = FirstViewController()
let navigationController = UINavigationController(rootViewController: viewController)
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
self.window?.rootViewController = navigationController
self.window?.makeKeyAndVisible()
return true
}
Ответ №2:
let viewController = FirstViewController()
let navVc = UINavigationController(rootViewController: viewController)
window?.rootViewController = navVc
Вы не можете видеть панель навигации, потому что вы не встраиваете свой текущий контроллер просмотра в навигационный контроллер.
Ответ №3:
Поскольку вы используете раскадровку, вам следует встроить свой ViewController в навигационный контроллер. Вы можете сделать это с помощью,
- сначала откройте свой
Main.storyboard
файл - Выберите свой начальный контроллер просмотра
- Вхожу в
Editor > Embed in > Navigation Controller
или вы могли бы сделать это программно, сославшись на ответ @jignesh