Questione : Adattando il UITabBarController per il cliente - o generando un UIViewControlller simile ad esso

Posso generare un UIViewController simile a UITabBarController ma non visualizzo la barra inferiore della linguetta? Voglio sostituire un UITabBarController attuale in un'applicazione con questo UIViewController su ordinazione in modo da il codice non deve cambiare molto affatto. Al momento sto nascondendo il UITabBarController usando il

- (vuoto) hideTabBar: (UITabBarController *) viewController {
se ([conteggio di viewController.view.subviews] < ritorno di 2)
;
   
    UIView *contentView;
del
se ([[objectAtIndex di viewController.view.subviews: ] isKindOfClass 0: [Codice categoria di UITabBar]]) contentView del
= [objectAtIndex di viewController.view.subviews: 1]; contentView del else
del
= [objectAtIndex di viewController.view.subviews: 0];
del
contentView.frame = viewController.view.bounds;            
viewController.tabBar.hidd/>en = SÌ; il

But del
} l'edizione è quando vado ad un regolatore di vista di sistema quale ABPeoplePickerNavigationController che una barra nera compare dove il UITabBarController è destinato per essere. il

I vuole generare un'abitudine UIViewController che si comporta come un UITabBarController che sarà il regolatore di vista della radice ed allora visualizza tutto il altro UIViewControllers ad un modo della linguetta a meno che non abbia un GUI della barra della linguetta, io programmatically commuterà alla linguetta corretta io stesso.
class= del

Risposta : Adattando il UITabBarController per il cliente - o generando un UIViewControlller simile ad esso

Ho risolto questo io stesso generando il mio proprio contenitore UIViewController per imitare la barra della linguetta

//
// UITabBarController.h
//

#import

@interface UITabBarController: UIViewController
{
  *viewcontrollers di NSMutableArray;
  currentViewIndex di int;
}

selectedIndex (non atomico) di int di @property;

- initWithViewControllers (identificazione): (NSArray *) viewControllers;

@end




//
// UITabBarController.m
//

#import “UITabBarController.h„

@implementation UITabBarController

- initWithViewControllers (identificazione): (NSArray *) viewControllers
{
  se (auto = [init eccellente])
  {
    viewcontrollers = [[init del alloc di NSMutableArray]];
    conteggio di int = [conteggio di viewControllers];
    per (int i=0; i    {
      *vc di UIViewController = [objectAtIndex di viewControllers: i];
      [addObject di viewcontrollers: vc];
    }
    currentViewIndex = 0;
    [setSelectedIndex di auto: 0];
  }
 
  auto di ritorno;
}

- setSelectedIndex (vuoto): indice (int)
{
  // che rimuove vista corrente
  *viewcontroller di UIViewController = [objectAtIndex di viewcontrollers: currentViewIndex];
  [viewcontroller viewWillDisappear: NESSUN];
  [removeFromSuperview di viewcontroller.view];
  [viewcontroller viewDidDisappear: NESSUN];
 
  // che aggiunge nuova vista
  currentViewIndex = indice;
  viewcontroller = [objectAtIndex di viewcontrollers: currentViewIndex];
  [viewcontroller viewWillAppear: NESSUN];
  [addSubview di self.view: viewcontroller.view];
  [viewcontroller viewDidAppear: NESSUN];
}

- selectedIndex (int)
{
  currentViewIndex di ritorno;
}

- dealloc (vuoto)
{
  [dealloc di viewcontrollers];
  [dealloc eccellente];
}

@end


Altre soluzioni  
 
programming4us programming4us