2011-10-14 12 views
9

, मैं एक बटन, जब प्रेस बटन, प्रवेश navigationController, की तरह मेरे कोड:self.navigationController रिक्त है मेरी ViewController में

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

लेकिन मैं देख सकता हूँ self.navigationController रिक्त है, कैसे करने के लिए इस समस्या को हल करें? धन्यवाद।

अद्यतन:

- (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

मैं नेविगेशन नियंत्रक ढेर पदानुक्रम में नहीं में अपने currentViewController लगता है। नेविगेशन नियंत्रक को currentViewController जोड़ें यार समस्या – iOSPawan

+0

हल करना चाहिए तो मुझे क्या करना चाहिए? – Gaojian922188

+1

ऐप प्रतिनिधि में विंडो ऑब्जेक्ट है, AppDidFinishLaunching विधि में पहले yr firstcontroller के लिए ऑब्जेक्ट बनाएं, फिर नेविगेशन कंट्रोलर ऑब्जेक्ट बनाएं - [[UINavigationController alloc] initWithRootViewController: yrcurrentcontroller]; [self.window addSubView: navigationController.view] – iOSPawan

उत्तर

19

एक वैध नेविगेशन नियंत्रक वस्तु केवल तभी दृश्य नियंत्रक एक नेविगेशन नियंत्रक के नेविगेशन ढेर में है वापस आ जाएगी एक दृश्य नियंत्रक के navigationController संपत्ति। निम्नलिखित तरीकों से एक नेविगेशन स्टैक में एक व्यू कंट्रोलर जोड़ा जा सकता है।

  1. दृश्य नियंत्रक initWithRootViewController का उपयोग कर एक नेविगेशन नियंत्रक के rootViewController बनाने द्वारा: की विधि UINavigationController

  2. pushViewController का उपयोग कर दृश्य नियंत्रक धक्का द्वारा: की विधि UINavigationController

सुनिश्चित करें कि उपरोक्त किसी भी तरीके से नेविगेशन स्टैक में आपका व्यू कंट्रोलर जोड़ा गया है।


संपादित करें: (didFinishLaunchingWithOptions के बाद: कोड सवाल को जोड़ा गया):

बदलें didFinishLaunchingWithOptions: यह करने के लिए विधि,

- (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

मेरे पास नेविगेशन नियंत्रक से निपटने के बारे में उपर्युक्त कोड है, तो मुझे और क्या कोड लिखने की आवश्यकता है, धन्यवाद। – Gaojian922188

+0

आपके पास * विंडो -> currentViewController * है और अब आप * marketviewcontroller *, (यानी) * विंडो -> currentViewController -> marketviewcontroller * को धक्का देना चाहते हैं? – EmptyStack

+0

हाँ, आप सही हैं – 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

इस कोड को हल आप देख रहे हैं निकलेगा:

-(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

धन्यवाद इससे मुझे अन्य स्थितियों में मदद मिली –

संबंधित मुद्दे