iPhone如何启用或禁用UITabBar

时间:2010-04-19 20:40:39

标签: iphone uitabbar

我有一个带标签栏的简单应用程序,根据用户输入禁用一个或多个条形项。我知道我需要使用我尝试使用的UITabBarDelegate。但是,当我调用委托方法时,我得到一个未捕获的异常错误[NSObject doesNotRecognizeSelector]。我不确定我是在做这件事还是我没有错过任何东西。任何建议。

我现在拥有以下内容:

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

我得到的是一个好的控制器对象,但在[[controller tabBarItem] setEnabled:enable]上崩溃;

我错过了什么......

任何建议

谢谢,

4 个答案:

答案 0 :(得分:27)

// Disable    
UITabBarController.tabbar.userInteractionEnabled = NO;

// Enable
UITabBarController.tabbar.userInteractionEnabled = YES;

答案 1 :(得分:3)

您需要实现UITabBarControllerDelegate,特别是

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

并为那些应该禁用的viewControllers返回NO。

答案 2 :(得分:3)

self.tabBarController?.tabBar.userInteractionEnabled = false将在swift

中完成

答案 3 :(得分:0)

您也可以通过选择父视图控制器来选择标签栏控制器。我这样做了,而不需要实现任何代表。

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