2017-07-18 5 views
-1

AppDelegate.mNavigatorController ist gleich Null

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

Ich weiß nicht, warum die UINavigationController immer gleich Null.

Bitte helfen Sie !!

Antwort

1

Statt navigationController 's Ansicht als window' s Hinzufügen subview Versuchen Sie, navigationController als Fenster rootViewController

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

Ich habe es versucht. Aber nicht arbeiten –

+0

Versuchen Sie einfach mit [_window setRootViewController: nav]; anstelle von window.rootViewController = nav; –

0

NEUE LÖSUNG

versuchen, diese

in 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; 
} 

in ViewContoller.m jetzt wird diese Arbeit:

UINavigationController *nav = self.navigationController; 
[nav pushViewController:controller animated:YES]; 

alte Lösung

diesen Code versuchen

in AppDelegate.h sicher sein, dies haben mindestens

@interface AppDelegate : NSObject <UIApplicationDelegate> 
{} 

@property (nonatomic, retain) IBOutlet UIWindow *window; 
@property (nonatomic, retain) IBOutlet UINavigationController *navController; 

@end 

in AppDelegate.m zumindest diese

@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 

in Storyboard sicher sein, ein Navigation binded zu einem Viewcontroller geschaffen haben, als Anfang View-Controller definiert und als Root-View-Controller für die binded binded view controller

in der App allgemeine Einstellungen Registerkarte sicher sein, das Storyboard in der Deployment-Info-Abschnitt gesetzt haben (auch in diesem Abschnitt könnten Sie set Statusleiste Stil)

in ViewContoller.m jetzt wird diese Arbeit:

UINavigationController *nav = self.navigationController; 
[nav pushViewController:controller animated:YES]; 

die navigationbar Stil bearbeiten Sie es auf diese Weise tun können

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

_navController.navigationBar.barStyle = UIBarStyleBlackOpaque; Absturz 'NSInvalidArgumentException', Grund wird: '- [UIViewController navigationbar]: Unbekannter Selektor gesendet Instanz 0x103d22720' –

+0

@ManlokWong, korrigierte meine Antwort, haben Sie bitte einen Scheck :) – ddb

+0

Absturz 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

selbst. navigationController ist auch kein –

+0

Dieser Code funktioniert in meinem Fall absolut gut. Ich denke, es gibt ein Problem in Ihrem View-Controller-Code. Können Sie überprüfen, ob Sie den Navigationssteuerungs-Stack in Ihrem Viewcontroller-Code manipuliert haben? –

Verwandte Themen