8

我有一个带有标签栏的简单应用程序,它根据用户输入禁用一个或多个栏项目。我知道我需要使用我尝试使用的 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

4 回答 4

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

// Enable
UITabBarController.tabbar.userInteractionEnabled = YES;
于 2010-11-12T07:08:27.517 回答
3

self.tabBarController?.tabBar.userInteractionEnabled = false会迅速完成

于 2015-03-22T22:12:36.467 回答
3

您需要实现 UITabBarControllerDelegate,特别是

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

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

于 2010-04-19T20:54:27.957 回答
0

您也可以通过选择父视图控制器来选择标签栏控制器。我在不需要实施任何代表的情况下做到了这一点。

self.parentViewController.tabBarController.tabBar.userInteractionEnabled = NO;
于 2014-06-18T20:24:46.230 回答