У меня есть простое приложение с панелью вкладок, которая основанный на вводе данных пользователем отключает один или несколько объектов панели. Я понимаю, что должен использовать 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
Я получаю то, что, кажется, хороший объект контроллера, но катастрофический отказ на [[контроллер tabBarItem] setEnabled:enable];
Что я пропускаю...
Любые предложения
Спасибо,
Вам необходимо реализовать UITabBarControllerDelegate, в частности
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
, и вернуть NO для тех контроллеров просмотра, которые должны быть отключены.