У меня проблема с моим UINavigationController
, когда я пытаюсь нажать другой контроллер.Swift - UINavigation Controller становится nil
AppDelegate
let testViewController:ProximityQuestionsIntroductionViewController = ProximityQuestionsIntroductionViewController();
self.navController = UINavigationController(rootViewController: testViewController);
self.window = UIWindow(frame: UIScreen.mainScreen().bounds);
self.window!.rootViewController = navController;
self.window!.backgroundColor = UIColor.whiteColor();
self.window!.makeKeyAndVisible();
return true
ProximityQuestionsIntroductionViewController
class ProximityQuestionsIntroductionViewController:UIViewController {
// Controls
var proximityIntroductionView:ProximityQuestionsIntroductionView!;
// Load components when the view is loaded
override func viewDidLoad() {
super.viewDidLoad();
print("nav in viewDidLoad : \(self.navigationController)");
//Hide Nav bar
self.navigationController?.navigationBarHidden = true;
// Set view
self.proximityIntroductionView = ProximityQuestionsIntroductionView(frame: self.view.frame);
self.view = self.proximityIntroductionView;
}
func start(){
print(self);
print("start in controller");
let nextController = ProximityQuestionsProgressViewController();
print("nav in start : \(self.navigationController)");
self.navigationController?.pushViewController(nextController, animated: true);
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
Я называю start
от моего ProximityQuestionsIntroductionView
при нажатии кнопки. В журнале я вижу «nav в начале: ноль» и контроллер не меняется.
Для получения дополнительной информации:
самость действительно
ProximityQuestionsIntroductionViewController
.навигационная панель действительно скрыта
Так навигационный контроллер нормально в viewDidLoad
, но не в другой функции.
Может ли кто-нибудь сказать мне, почему?
Спасибо!
EDIT: AppDelegate
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let initialViewController = storyboard.instantiateViewControllerWithIdentifier("ProximityIntroduction");
self.navController = storyboard.instantiateViewControllerWithIdentifier("NavigationController") as! UINavigationController;
self.navController?.setViewControllers([initialViewController], animated: false)
self.window?.rootViewController = navController;
self.window?.makeKeyAndVisible();
добавить навигационный контроллер в раскадровку и изменить идентификатор. Но я до сих пор имеют значение nil
для UINavigationController
в функции start
Я пытаюсь выполнить весь свой проект без раскадровки, поэтому у меня есть: «NSInvalidArgumentException», причина: «Storyboard ()) не содержит контроллера вида с идентификатором« ProximityQuestionsIntroductionViewController »' –
Так вы используете xib для дизайна? –
Я делаю все это программно. Это проект, который был запущен другими людьми, и я просто не могу прочитать раскадровку, это беспорядок. –