2009-07-30 9 views
19

Mam UITabBar w widoku szczegółów mojej aplikacji opartej na nawigacji. Przechowuję tekst i obrazy w widoku tabeli i chciałbym, aby użytkownik mógł dotknąć komórki, aby ukryć kontroler nawigacyjny i pasek zakładek, aby wyświetlić zawartość na pełnym ekranie.Czy można ukryć pasek zakładek po naciśnięciu przycisku, aby umożliwić pełny przegląd zawartości?

Znalazłem ten kod do ukrywania górnych pasków, ale nie jest tak łatwo ukryć pasek zakładek.

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

Czy ktoś wie, jak to zrobić?

Ten kod nie działa w celu ukrycia tabBar, gdy widok jest już załadowany.

yourTabViewController.hidesBottomBarWhenPushed = YES; 

Jest to kod znalazłem. Wygląda na to, że działa tylko wtedy, gdy widok jest załadowany, więc nie można go użyć do ukrycia paska zakładek, gdy już się pojawi. Nadal staram się wykonać tę pracę. Proszę pomóż!!!

self.tabBarController.tabBar.hidden = YES; 

Odpowiedz

8

Najlepszym rozwiązaniem, które znalazłem, jest zmiana rozmiaru widoku, tak aby obejmował tabbar. Tu jest mój kodu za ukrywanie paska stanu, pasek nawigacyjny i umieszczenie zakładek, gdy wybrany wiersz:

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

bym użyć „inny”, ale to ja ... –

0

Aby dostosować rozmiar okna, należy najpierw wybrać opcję BRAK w polu paska stanu, pod zakładką Atrybuty okna Inspektora. Program Interface Builder pozwoli Ci zmienić rozmiar okna.

26

Jest wbudowany w sposób to zrobić:

self.hidesBottomBarWhenPushed = YES;

Ale trzeba to zrobić przed widok jest wciśnięty. W ten sposób możesz użyć tego:

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

Albo po prostu ustawić self.hidesBottomBarWhenPushed = TAK wewnątrz metody init kontrolera –

+0

dobrej rozmowy. Dzięki. –

+2

Co jeśli chcę to zrobić z głównym obiektem viewController na górze stosu? –

6

Moje rozwiązanie:

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

Trzeba dodać #import <QuartzCore/QuartzCore.h>

+0

To zadziałało cudownie! Możesz ustawić "brak dolnego paska" w swoim prawym oknie dialogowym lub prawym panelu budowania interfejsu dla kontrolera, który modyfikujesz, aby uzyskać dokładniejszy obraz miejsca, w którym elementy interfejsu będą kończyły się po ukryciu paska tabulatora. –

+0

Powoduje to ukrycie paska kart, ale pozostawia brzydką czarną przestrzeń – Dejell

3

Ive znaleźć jedną odpowiedź w tej kwestii, jest bardzo proste i efektywny.

Rozwiązaniem jest ustawienie opcji "Ukrywa dolny pasek przy wypychaniu" we WSZYSTKICH WIDOKACH, WIDOK KONTROLERACH i STEROWNIKACH TAB-BAR z aplikacji.

Możesz to zrobić w IB lub według kodu.

Mam nadzieję, że to pomoże każdemu ...

0

W przypadku ktoś potrzebuje MonoTouch wersji systemu operacyjnego to fajny mały trick. (Dzięki!)

// 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); 
      } 
     }); 
    } 
Powiązane problemy