2010-04-19 17 views
7

Tengo una aplicación simple con una barra de pestañas que, en función de la entrada del usuario, inhabilita uno o más de los elementos de la barra. Entiendo que necesito usar un UITabBarDelegate que he intentado usar. Sin embargo, cuando llamo al método delegado obtengo un error de excepción no detectada [NSObject doesNotRecognizeSelector]. No estoy seguro de estar haciendo esto bien o de que no me he perdido algo. Alguna sugerencia.iPhone cómo habilitar o deshabilitar UITabBar

Lo que tenemos ahora es la siguiente:

WMViewController.h 

#import <UIKit/UIKit.h> 

#define kHundreds 0 

@interface WMViewController : UIViewController <UITabBarDelegate, UIPickerViewDelegate, UIPickerViewDataSource>{ 

} 

@end 

WMViewController.m 

#import "WMViewController.h" 
#import "MLDTabBarControllerAppDelegate.h" 

@implementation WMViewController 

- (IBAction)finishWizard{ 
    MLDTabBarControllerAppDelegate *appDelegate = (MLDTabBarControllerAppDelegate *)[[UIApplication sharedApplication] delegate]; 
    [appDelegate setAvailabilityTabIndex:0 Enable:TRUE]; 


} 

MLDTabBarControllerAppDelegate.h 
#import <Foundation/Foundation.h> 


@interface MLDTabBarControllerAppDelegate : NSObject <UITabBarDelegate>{ 

} 

- (void) setAvailabilityTabIndex: (NSInteger) index Enable: (BOOL) enable; 

@end 


MLDTabBarControllerAppDelegate.m 

#import "MLDTabBarControllerApplicationDelegate.h" 
#import "MyListDietAppDelegate.h" 


@implementation MLDTabBarControllerAppDelegate 

- (void) setAvailabilityTabIndex: (NSInteger) index Enable: (BOOL) enable 
{ 
UITabBarController *controller = (UITabBarController *)[[[MyOrganizerAppDelegate getTabBarController] viewControllers ] objectAtIndex:index]; 

[[controller tabBarItem] setEnabled:enable]; 
} 

@end 

consigo lo que parece ser una buena objeto controlador, pero accidente en el [[tabBarItem controlador] setEnabled: enable];

¿Qué me falta ...

Cualquier sugerencia

Gracias,

Respuesta

3

que necesita para implementar el UITabBarControllerDelegate, en particular,

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController 

y no devuelven para aquellos que viewControllers debería estar deshabilitado

26
// Disable  
UITabBarController.tabbar.userInteractionEnabled = NO; 

// Enable 
UITabBarController.tabbar.userInteractionEnabled = YES; 
0

Puede seleccionar el controlador de la barra de pestañas seleccionando también el controlador de vista principal. Lo hice sin la necesidad de implementar ningún delegado.

self.parentViewController.tabBarController.tabBar.userInteractionEnabled = NO; 
3

self.tabBarController?.tabBar.userInteractionEnabled = false lo hará en Swift

Cuestiones relacionadas