我正在重建一个没有故事板的应用程序,其中我遇到最大麻烦的部分是以编程方式导航视图到视图。很少有东西不使用故事板,所以很难找到这个问题的答案。
我的问题很简单。我有我的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
返回nil。我试过这样做:
在创建ViewController
类时使用var navController = UINavigationController()
(但在ViewDidLoad外部的类声明下面),并使用navController
变量完成推送,但这并不起作用。
我在想,也许解决方案是在App Delegate中创建一个导航控制器,我猜整个应用程序都会使用它作为全局变量?
我希望这篇文章可以服务于许多其他刚接触Swift并希望从他们的应用程序中删除故事板的人。
感谢您的关注和帮助。
https://stackoverflow.com/questions/30956476
复制相似问题