Почему следующий код не открывает навигационный контроллер при нажатии на кнопку камеры?Выполненная функция указывает, что камера должна выдвигать контроллер вида, но ничего не происходит.
func setNavigationBar() {
let screenSize: CGRect = UIScreen.main.bounds
let navBar = UINavigationBar(frame: CGRect(x: 0, y: 20, width: screenSize.width, height: 160))
let navItem = UINavigationItem(title: "Hello")
let doneItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.camera, target: nil, action: #selector(done))
navItem.rightBarButtonItem = doneItem
navBar.setItems([navItem], animated: false)
self.view.addSubview(navBar)
}
@objc func done() { // remove @objc for Swift 3
let dummyViewController = UIViewController()
navigationController?.pushViewController(dummyViewController, animated: true)
}
Это AppDelagate:
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions:
[UIApplicationLaunchOptionsKey: Any]?) -> Bool {
Thread.sleep(forTimeInterval: 2.0)
FirebaseApp.configure()
window = UIWindow(frame: UIScreen.main.bounds)
window?.makeKeyAndVisible()
window?.rootViewController =
UINavigationController(rootViewController: MessagesController())
UITableViewCell.appearance().textLabel?.textColor = UIColor.white;
UITableViewCell.appearance().backgroundColor = UIColor.clear
UIApplication.shared.statusBarStyle = .lightContent
UINavigationBar.appearance().titleTextAttributes = [NSAttributedStringKey.foregroundColor : UIColor.white]
UINavigationBar.appearance().barTintColor = UIColor(red:0.13, green:0.15, blue:0.18, alpha:1.0)
UIApplication.shared.isStatusBarHidden = false
return true
}
func applicationWillResignActive(_ application: UIApplication) {
let im = UIImageView()
im.tag = 12
im.frame = (self.window?.frame)!
im.image = UIImage.init(named: "launchbackground.png")
application.keyWindow?.subviews.last?.addSubview(im)
}
func applicationDidEnterBackground(_ application: UIApplication) {
let im = UIImageView()
im.tag = 12
im.frame = (self.window?.frame)!
im.image = UIImage.init(named: "launchbackground.png")
application.keyWindow?.subviews.last?.addSubview(im)
}
func applicationWillEnterForeground(_ application: UIApplication) {
if let sub = application.keyWindow?.subviews.last
{
for vv in sub.subviews
{
if(vv.tag == 12)
{
vv.removeFromSuperview()
}
}
}
}
func applicationDidBecomeActive(_ application: UIApplication) {
if let sub = application.keyWindow?.subviews.last
{
for vv in sub.subviews
{
if(vv.tag == 12)
{
vv.removeFromSuperview()
}
}
}
}
func applicationWillTerminate(_ application: UIApplication) {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}
}
Есть ли что-нибудь еще, что я могудобавьте или удалите, чтобы помочь решить эту проблему, любые предложения приветствуются.
ОБНОВЛЕНИЕ:
Так что в основном у меня есть контроллер корневого представления, который отображается только после того, как пользовательвошел в систему. Перед тем как пользователь вошел в систему, ему предоставляется другой контроллер представления, который я пытаюсь построить прямо сейчас;этот контроллер представления является страницей регистрации, для которой мне нужно иметь панель навигации вверху с опцией «Войти». План состоял в том, чтобы пользователь мог нажать на элемент управления навигацией «Логин» и быть представлен с контроллером навигации (который поставляетсясправа), который отображает форму входа.