我有一个带标签栏的简单应用程序,根据用户输入禁用一个或多个条形项。我知道我需要使用我尝试使用的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]上崩溃;
我错过了什么......
任何建议
谢谢,
答案 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;