【发布时间】:2015-09-06 12:27:15
【问题描述】:
我正在重建一个没有情节提要的应用程序,其中我遇到最大问题的部分是以编程方式导航视图到视图。很少有不使用情节提要的东西写出来,因此很难找到答案。
我的问题很简单。我有我的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 并希望从他们的应用程序中删除故事板的人提供帮助。
感谢您的浏览和帮助。
【问题讨论】:
标签: ios objective-c swift uinavigationcontroller appdelegate