2012-12-12 17 views
5

में पहले लॉगिन पेज से टैब बार न दिखाएं मैंने अपने ऐप में टैब बार नियंत्रक को लागू किया। लेकिन मेरा पहला पृष्ठ लॉगिन व्यू है। तो, मैं उस पर टैब बार नहीं दिखाना चाहता हूं। मैंने उस दृश्य पर टैब बार छुपाकर ऐसा किया।आईफोन एसडीके

लेकिन अब, जब मैंने पहला टैब चुना, तो यह हमेशा लॉगिन पृष्ठ के रूप में रूटव्यू नियंत्रक पर जाता है।

//for home tab.. 


    UINavigationController *nav1 = [[UINavigationController alloc] init]; 

    UIViewController *viewController1; 
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { 
     viewController1 = [[[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil] autorelease]; 
    } else 
    { 
     viewController1 = [[[LoginViewController alloc] initWithNibName:@"LoginViewController_iPad" bundle:nil] autorelease]; 
    } 

    nav1.viewControllers = [NSArray arrayWithObjects:viewController1, nil]; 



    //for account tab... 
    UINavigationController *nav2 = [[UINavigationController alloc] init]; 
    UIViewController *viewController2; 
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { 
     viewController2 = [[[AccountView alloc] initWithNibName:@"AccountView_iPhone" bundle:nil] autorelease]; 
    } else 
    { 
     viewController2 = [[[AccountView alloc] initWithNibName:@"AccountView_iPad" bundle:nil] autorelease]; 
    } 
    nav2.viewControllers = [NSArray arrayWithObjects:viewController2, nil]; 

    //for links tab... 
    UINavigationController *nav3 = [[UINavigationController alloc] init]; 
    UIViewController *viewController3; 
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { 
     viewController3 = [[[LinksView alloc] initWithNibName:@"LinksView_iPhone" bundle:nil] autorelease]; 
    } else 
    { 
     viewController3 = [[[LinksView alloc] initWithNibName:@"LinksView_iPad" bundle:nil] autorelease]; 
    } 
    nav3.viewControllers = [NSArray arrayWithObjects:viewController3, nil]; 

    //for about us tab... 
    UINavigationController *nav4 = [[UINavigationController alloc] init]; 
    UIViewController *viewController4; 
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { 
     viewController4 = [[[AboutUsView alloc] initWithNibName:@"AboutUsView_iPhone" bundle:nil] autorelease]; 
    } else 
    { 
     viewController4 = [[[AboutUsView alloc] initWithNibName:@"AboutUsView_iPad" bundle:nil] autorelease]; 
    } 
    nav4.viewControllers = [NSArray arrayWithObjects:viewController4, nil]; 


    self.tabBarController = [[[UITabBarController alloc] init] autorelease]; 
    self.tabBarController.viewControllers = [NSArray arrayWithObjects:nav1,nav2,nav3,nav4,nil]; 

    self.tabBarController.tabBar.tintColor = [UIColor blackColor]; 

    //self.tabBarController.tabBar.tintColor = [UIColor colorWithRed:237.0/255.0 green:208.0/255.0 blue:0.0/255.0 alpha:1.0]; 

    self.window.rootViewController=self.tabBarController; 

मैं इसे कैसे हल कर सकता हूं?

+0

यदि मेरा उत्तर आपके लिए उपयोगी है तो मेरे उत्तर को स्वीकार करें और ऊपर उठाएं प्रिय :) –

उत्तर

0

बस व्यू कंट्रोलर को UINavigationController को बोले की तरह असाइन करें।

UINavigationController *nav1 =[[UINavigationController alloc]initWithRootViewController:viewController1]; 

UINavigationController *nav2 =[[UINavigationController alloc]initWithRootViewController:viewController2]; 

UINavigationController *nav3 =[[UINavigationController alloc]initWithRootViewController:viewController3]; 

UINavigationController *nav4 =[[UINavigationController alloc]initWithRootViewController:viewController4]; 

और फिर tabbar अपने कोड की तरह ही में आवंटित ..

self.tabBarController.viewControllers = [NSArray arrayWithObjects:nav1,nav2,nav3,nav4,nil]; 
self.window.rootViewController = self.tabBarController; 
+0

shu k Bhura kya 6e aajkal ??? तने से देखता जे नाथी ने का ??? –

0

this समाधान पर एक नजर डालें।
मूल रूप से आप rootViewController को अपने loginVC से tabBarVC पर उपयोगकर्ता लॉग इन करने के बाद स्विच कर सकते हैं। लेकिन मुझे लगता है कि loginVC आपके tabBarVC का "पहला पृष्ठ" नहीं होना चाहिए, लेकिन शूल्ड एक इंडिपेंडेंट व्यू कंट्रोलर होना चाहिए।

लेकिन अगर आप पहले टैब में लॉगिन चाहते हैं तो आप उपयोगकर्ता के लॉग के बाद वीसी के दृश्य को बदल सकते हैं।
आप NSUserDefaults में एक झंडा सेट कर सकते हैं यह जानने के लिए कि उपयोगकर्ता ने पहले टैब के viewDidAppear: में लॉग इन किया है, तो आप यह जांच सकते हैं कि उपयोगकर्ता लॉग है और आपका अलग यूआई दिखाएं।

ps: आप आईफोन/आईपैड here के लिए एक अलग xib लोड करने के लिए सभी शर्तों को लिखने के लिए एक छोटी सी चाल नहीं पा सकते हैं।

0

आप बिना TabBarController अपने Loginview को दिखाने के लिए एक अलग तरह से उपयोग करने के लिए
TabBarController पर LoginView का प्रयोग न करें की है।
आपको लॉगिन जैसे बूलियन मान चुनना होगा।

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
NSUserDefaults *default=[NSUserDefaults standardUserDefaults]; 
if(![default boolForKey:@"login"]) 
{ 
    //here tab is your tabBarController. 
    [tab presentViewController:yourLoginView animated:YES completion:nil]; 
} 
else{ 
    //your normal code 
} 

उपयोगकर्ता लॉगिन के बाद आप लॉगिन = हाँ सेट कर सकते हैं।