2017-07-18 61 views
-1

AppDelegate.mNavigatorController爲零

_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爲零。

請幫忙!!

回答

1

而不是增加navigationController的觀點爲windowsubview嘗試添加navigationController作爲窗口的rootViewController

window.rootViewController = nav; 
[_window makeKeyAndVisible]; 
+0

我試過了。但不工作 –

+0

只需嘗試使用[_window setRootViewController:nav];而不是window.rootViewController = nav; –

0

新的解決方案的

試試這個

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]; 

編輯的導航欄樣式,你可以這樣來做

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.navigationController.navigationBar.barStyle = UIBarStyleBlackOpaque; 
} 
+0

_navController.navigationBar。barStyle = UIBarStyleBlackOpaque;將崩潰 'NSInvalidArgumentException',原因:' - [UIViewController navigationBar]:無法識別的選擇器發送到實例0x103d22720' –

+0

@ManlokWong,糾正我的答案,請檢查:) – ddb

+0

崩潰pushViewController –

0
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() 
0
@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]; 
+0

self。 navigationController也是零 –

+0

這段代碼在我的情況下工作得很好。我猜,你的視圖控制器代碼中存在一些問題。你可以檢查你的viewcontroller代碼中是否有操縱導航控制器堆棧。 –