2009-07-30 12 views
19

मेरे पास नेविगेशन आधारित एप्लिकेशन के विस्तार से एक UITabBar है। मैं एक टेबलव्यू में टेक्स्ट और छवियों को संग्रहीत कर रहा हूं और चाहता हूं कि उपयोगकर्ता ने नेविगेशन नियंत्रक को छिपाने के लिए सेल पर टैप करने में सक्षम होना चाहिए और सामग्री के पूर्ण स्क्रीन देखने के लिए टैबबार।सामग्री के पूर्ण स्क्रीन दृश्य को अनुमति देने के लिए बटन दबाए जाने पर टैबबार को छिपाना संभव है?

मुझे शीर्ष बार छिपाने के लिए यह कोड मिला, लेकिन यह टैबबार को छिपाने में आसान नहीं लगता है।

[[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES]; 
[self.navigationController setNavigationBarHidden:YES animated:YES]; 

किसी को भी ऐसा करने के तरीके पता है?

यह कोड टैब लोड करने के लिए काम नहीं करता है जब दृश्य पहले से लोड हो जाता है।

yourTabViewController.hidesBottomBarWhenPushed = YES; 

इस कोड को मैंने पाया है। ऐसा लगता है कि जब दृश्य लोड हो जाता है तो केवल तभी काम करता है, इसलिए इसे टैबबार को छिपाने के लिए इसका उपयोग नहीं किया जा सकता है। मैं अभी भी यह काम करने के लिए संघर्ष कर रहा हूं। कृपया सहायता कीजिए!!!

self.tabBarController.tabBar.hidden = YES; 

उत्तर

8

मैंने पाया है कि सबसे अच्छा कामकाज दृश्य आकार को बदलना है ताकि यह टैबबार को कवर कर सके। यहाँ छुपा Statusbar, नेविगेशन बार, और tabBar जब एक पंक्ति का चयन किया गया के लिए अपने कोड है: स्थिति पट्टी क्षेत्र में कोई नहीं के विकल्प का चयन करने की आवश्यकता है

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 

if (appDelegate.navigationController.navigationBar.hidden == NO) 
{ 
    [[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES]; 
    [appDelegate.navigationController setNavigationBarHidden:YES animated:YES]; 

    [UIView beginAnimations:@"HideTabbar" context:nil]; 
    [UIView setAnimationDuration:.2]; 
    self.view.frame = CGRectMake(0,0,320,480); 
    [UIView commitAnimations]; 
} 
if (appDelegate.navigationController.navigationBar.hidden == YES) 
{ 
    [[UIApplication sharedApplication] setStatusBarHidden:NO animated:YES]; 
    [appDelegate.navigationController setNavigationBarHidden:NO animated:YES]; 

    [UIView beginAnimations:@"ShowTabbar" context:nil]; 
    [UIView setAnimationDuration:.2]; 
    self.view.frame = CGRectMake(0,0,320,368); 
    [UIView commitAnimations]; 
} 
} 
+2

मैं एक "और" का उपयोग करते हैं, लेकिन है कि मुझे है ... –

0

आदेश में अपने खिड़की के आकार को समायोजित करने के लिए, आप, अपने इंस्पेक्टर टैब के तहत, अपने इंस्पेक्टर टैब के अंतर्गत। इंटरफ़ेस बिल्डर तब आपको अपनी विंडो का आकार बदल देगा।

26

निर्मित एक तरीका यह है नहीं है:

self.hidesBottomBarWhenPushed = YES;

लेकिन आप पहले दृश्य धकेल दिया जाता है यह करने के लिए किया है।

ChildViewController* childVC = [[ChildViewController alloc] init]; 
childVC.hidesBottomBarWhenPushed = YES; 
[self.navigationController pushViewController:childVC animated:YES]; 
[childVC release]; 
+9

या बस = हाँ self.hidesBottomBarWhenPushed नियंत्रक –

+0

अच्छी कॉल की init विधि के अंदर निर्धारित किया है। धन्यवाद। –

+2

क्या होगा यदि मैं स्टैक के शीर्ष पर रूट व्यू कंट्रोलर के साथ ऐसा करना चाहता हूं? –

6

मेरे समाधान:: आप इस तरीके का उपयोग करने के लिए चाहते हो सकता है कि है

// Hide tab bar animated 
CATransition *animation = [CATransition animation]; 
[animation setType:kCATransitionFade]; 
[[self.view.window layer] addAnimation:animation forKey:@"layerAnimation"]; 
[self.tabBarController.tabBar setHidden:YES]; 

// Display tab bar animated 
CATransition *animation = [CATransition animation]; 
[animation setType:kCATransitionFade]; 
[[self.view.window layer] addAnimation:animation forKey:@"layerAnimation"]; 
[self.tabBarController.tabBar setHidden:NO]; 

आप #import <QuartzCore/QuartzCore.h>

+0

यह अद्भुत काम किया! जब आप टैबबार –

+0

छुपाते हैं तो इंटरफ़ेस तत्व समाप्त होने के बारे में एक और सटीक विचार प्राप्त करने के लिए संशोधित कर रहे हैं, तो आप अपने स्टोरीबोर्ड या इंटरफ़ेस बिल्डर दाहिने पैनल में नियंत्रक के लिए "कोई निचला पट्टी" सेट कर सकते हैं, यह टैब बार को छुपाता है, लेकिन एक बदसूरत काला जगह छोड़ देता है – Dejell

3

मैं इस मुद्दे पर एक ही जवाब मिला जोड़ने के लिए, बहुत सरल है और प्रभावी।

समाधान सभी दृश्यों में "पुश पर छुपाएं नीचे बार" सेट करने के लिए है, अपने ऐप के नियंत्रक और टैब बार नियंत्रक देखें।

आप इसे आईबी या कोड द्वारा वैसे भी कर सकते हैं।

आशा है कि आप इस हर किसी को मदद करता है ...

0

मामले में किसी भी एक MonoTouch संस्करण ओएस इस शांत छोटे चाल की जरूरत है। (धन्यवाद!)

// Method implementations 
    static void hideTabBar (UITabBarController tabbarcontroller) 
    { 
     UIView.Animate(0.4, delegate() { 
      foreach(UIView view in tabbarcontroller.View.Subviews) 
      { 
       if(view.GetType()==typeof(UITabBar)) 
        view.Frame=new RectangleF(view.Frame.X, 480, view.Frame.Size.Width, view.Frame.Size.Height); 
       else 
        view.Frame=new RectangleF(view.Frame.X, view.Frame.Y, view.Frame.Size.Width, 480); 
      } 
     }); 
    } 

    static void showTabBar (UITabBarController tabbarcontroller) 
    { 
     UIView.Animate(0.4, delegate() { 
      foreach(UIView view in tabbarcontroller.View.Subviews) 
      { 
       if(view.GetType()==typeof(UITabBar)) 
        view.Frame=new RectangleF(view.Frame.X, 367, view.Frame.Size.Width, view.Frame.Size.Height); 
       else 
        view.Frame=new RectangleF(view.Frame.X, view.Frame.Y, view.Frame.Size.Width, 367); 
      } 
     }); 
    } 
संबंधित मुद्दे