2011-10-14 8 views
9

w moim viewcontroller, mam przycisku, kiedy nacisnąć przycisk, wpis navigationController, mój kod jak:self.navigationController jest null

-(IBAction)ShangHaiButtonPressed:(id)sender{ 
    marketviewcontroller = [[MarketViewController alloc]initWithNibName:@"MarketViewController" bundle:nil]; 
    NSLog(@"%@",self.navigationController); 
    [self.navigationController pushViewController:marketviewcontroller animated:YES]; 
    [marketviewcontroller release]; 
} 

ale widzę self.navigationController jest null, jak rozwiązać ten problem? dziękuję.

zmiana:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    _switchviewcontroller = [[SwitchViewController alloc]initWithNibName:@"SwitchViewController" bundle:nil]; 
    [self.window addSubview:_switchviewcontroller.view]; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 
+1

Chyba swoją currentViewController w nie w nawigacji kontroler stosu hierarchii. dodaj currentViewController do navigationcontroller powinien rozwiązać twój problem – iOSPawan

+0

, więc co powinienem zrobić? – Gaojian922188

+1

W delegacie aplikacji znajduje się obiekt Object, In AppDidFinishLaunching method Najpierw stwórz obiekt dla yr firstcontroller następnie stwórz NavigationControllerObject like - [[UINavigationController alloc] initWithRootViewController: yrcurrentcontroller]; [self.window addSubView: navigationController.view] – iOSPawan

Odpowiedz

19

navigationController własnością kontrolera widoku zwróci prawidłowy obiekt kontrolera nawigacji tylko wtedy, gdy kontroler widoku jest w nawigacji stosu kontrolera nawigacyjnego. Kontroler widoku można dodać do stosu nawigacji na następujące sposoby.

  1. Dzięki wykonaniu w widoku kontrolera rootViewController kontrolera nawigacyjnego przy initWithRootViewController: Sposób UINavigationController

  2. Wciskając przycisk sterowania widoku za pushViewController: Sposób UINavigationController.

Upewnij się, że kontroler widoku został dodany do stosu nawigacji na jeden z powyższych sposobów.


Edycja: (po didFinishLaunchingWithOptions: kod dodaje się do kwestii)

zmieniana jest didFinishLaunchingWithOptions: sposób do tego,

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    _switchviewcontroller = [[SwitchViewController alloc]initWithNibName:@"SwitchViewController" bundle:nil]; 
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:_switchviewcontroller]; 
    [self.window addSubview:navController.view]; 
    [navController release]; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 
+0

Po prostu mam powyższy kod na temat obsługi navigationController, więc co jeszcze kod muszę napisać, dziękuję. – Gaojian922188

+0

Masz * window -> currentViewController * a teraz chcesz nacisnąć * marketviewcontroller *, (ie) * okno -> currentViewController -> marketviewcontroller * w prawo? – EmptyStack

+0

tak, masz rację – Gaojian922188

0
In appdelegate.m file make your first view RootView for Navigation : 


-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{  

myView *Obj=[[myView alloc]initWithNibName:@"myView" bundle:nil]; 
UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:Obj]; 
nav.navigationBar.barStyle = UIBarStyleBlackOpaque; 
[window addSubview:nav.view]; 
[self.window makeKeyAndVisible]; 
return YES; 

}

In your myView.m file add below code to navigate to myNewView from myView : 

    -(void) registerMethod 
{ 
    myNewView *obj = [[myView alloc] initWithNibName:@"myNewView" bundle:nil]; 
    [self.navigationController pushViewController:obj animated:YES]; 

    [obj release]; 
} 
3

Kod ten przyniesie rozwiązanie, którego szukasz:

-(IBAction)ShangHaiButtonPressed:(id)sender { 
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:self]; 
    [self.view removeFromSuperview]; 
    [appDelegate.window addSubview:nav.view]; // appDelegate is the delegate of your Application 
    marketViewController = [[MarketViewController alloc] initWithNibName:@"MarketViewController" bundle:nil]; 
    [nav pushViewController:marketViewController animated:YES]; 
    [marketViewController release];  
} 
+0

to pomogło mi w innej sytuacji –

Powiązane problemy