Я перестраиваю приложение без раскадровки, а часть его, с которой у меня возникают проблемы, - это программно программировать просмотр-просмотр. Там написано мало вещей, которые не используют раскадровки, поэтому найти ответ для этого было непросто.
Моя проблема довольно проста. У меня есть мой ViewController
и мой SecondViewController
, и я хочу нажать от первого до последнего.
В AppDelegate
:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
window = UIWindow(frame: UIScreen.mainScreen().bounds)
window?.backgroundColor = UIColor.whiteColor()
window?.rootViewController = ViewController()
window?.makeKeyAndVisible()
return true
}
Затем в ViewController.swift
:
class ViewController: UIViewController, AVAudioPlayerDelegate, UITextFieldDelegate {
override func viewDidLoad() {
super.viewDidLoad()
startFinishButton.setTitle("Begin", forState: .Normal)
startFinishButton.addTarget(self, action: "moveToSecondViewController", forControlEvents: .TouchUpInside)
view.addSubview <*> startFinishButton
}
func moveToSecondViewController(sender: UIButton) {
let vc = SecondViewController()
println(self.navigationController) // returns nil
self.navigationController?.pushViewController(vc, animated: true)
}
}
Печать self.navigationController
возвращает нуль. Я пробовал делать:
var navController = UINavigationController()
, когда класс ViewController
создается (но вне ViewDidLoad, прямо под объявлением класса), и выполнил нажатие с помощью navController
var, но это не сработало.
Я думаю, может быть, решение состоит в том, чтобы создать контроллер навигации в App Delegate, который будет использовать все приложение, я полагаю, что это глобальная переменная?
Моя надежда заключается в том, что этот пост может обслуживать многих других, которые являются новыми для Swift и хотят удалить раскадровки из своего приложения.
Спасибо, что посмотрели и за вашу помощь.