NavigatorController равен нулю
AppDelegate.m
_viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:_viewController];
nav.navigationBar.barStyle = UIBarStyleBlackOpaque;
[_window addSubview:nav.view];
ViewContoller.m
UINavigationController *nav = self.navController;
[nav pushViewController:controller animated:YES];
Я не знаю почему UINavigationController
всегда ноль
Пожалуйста помоги!!
4 ответа
Вместо добавления navigationController
рассматриваю как window
"s subview
попробуйте добавить navigationController
как окно rootViewController
window.rootViewController = nav;
[_window makeKeyAndVisible];
@interface AppDelegate ()
@property (strong, nonatomic) UINavigationController *navigationController;
@end
//In Your Appdelegate didfinishlaunching method:
self.window = [[UIWindow alloc] init];
[self.window makeKeyAndVisible];
self.navigationController = [[UINavigationController alloc] initWithRootViewController: YourViewController];
self.window.rootViewController = self.navigationController;
//In Your View controller:
[self.navigationController pushViewController:controller animated:YES];
НОВОЕ РЕШЕНИЕ
попробуй это
в AppDelegate.m
@implementation AppDelegate
{}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UINavigationController *_navController = [[UINavigationController alloc] init];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = _navController;
ViewController* _viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
[_navController pushViewController:_viewController animated:YES];
return YES;
}
в ViewContoller.m теперь это будет работать:
UINavigationController *nav = self.navigationController;
[nav pushViewController:controller animated:YES];
СТАРЫЕ РЕШЕНИЯ
попробуй этот код
в AppDelegate.h обязательно иметь это по крайней мере
@interface AppDelegate : NSObject <UIApplicationDelegate>
{}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UINavigationController *navController;
@end
в AppDelegate.m хотя бы это
@implementation AppDelegate
{}
@synthesize window=_window;
@synthesize navController=_navController;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UINavigationController *_navController = self.window.rootViewController;
UIViewController* _viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
[_navController pushViewController:_viewController animated:YES];
return YES;
}
@end
в раскадровке обязательно создайте NavigationController, связанный с ViewController, определенный как начальный контроллер представления и связанный как корневой контроллер представления для контроллера связанного представления
на вкладке общих настроек приложения обязательно установите раскадровку в разделе информации о развертывании (также в этом разделе вы можете установить стиль строки состояния)
в ViewContoller.m теперь это будет работать:
UINavigationController *nav = self.navigationController;
[nav pushViewController:controller animated:YES];
отредактировать стиль навигации Bar вы можете сделать это следующим образом
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationController.navigationBar.barStyle = UIBarStyleBlackOpaque;
}
homeViewController = (mainStoryboard.instantiateViewControllerWithIdentifier("register") as? RegisterViewController)!
let navigationController :UINavigationController = UINavigationController()
navigationController.pushViewController(homeViewController, animated: true)
navigationController.navigationBarHidden = false
window?.rootViewController = nil
window?.rootViewController = navigationController
window?.makeKeyWindow()