친구가 어제 iPhone 프로그래밍에 대한 작은 자습서를 보냈습니다. 그런 다음 TabBar를 사용하여 전환 할 수있는 두 개의보기가있는 작은 프로그램을 만들려고했습니다. 하나는 파란색 배경, 다른 하나는 빨간색으로 바뀝니다.iPhone SDK의 TabBar 예외
그것은 그들이 잘 표시,하지만 난 (시뮬레이터)를 실행하고 탭을 클릭하면, 그와 함께 추락 :
"때문에 캐치되지 않는 예외 'NSInvalidArgumentException'응용 프로그램 종료, 이유 : '*** - [NSMachPort 는 _tabBarItemClicked :] : 인식 할 수없는 선택기 "
내가 지금까지 버그를 발견하지 못했다 0x38223e0 인스턴스에 전송 ... 당신은 어떤 아이디어를 가지고 있나요? DemoAppDelegate에서 :)
코드 :
- (void)applicationDidFinishLaunching:(UIApplication *)application {
// Override point for customization after application launch
[window makeKeyAndVisible];
UIColor *color = [UIColor blueColor];
DemoAppViewController *controller1 = [[DemoAppViewController alloc] initWithColor:color];
color = [UIColor redColor];
DemoAppViewController *controller2 = [[DemoAppViewController alloc] initWithColor:color];
[controller1 updateBackground];
[controller2 updateBackground];
UITabBarController *tbcontroller = [[UITabBarController alloc] init];
NSMutableArray *array = [NSMutableArray arrayWithObjects: controller1, controller2, nil];
UITabBarItem *item = [[UITabBarItem alloc] initWithTitle:@"Blue" image:nil tag:1];
[controller1 setTabBarItem: item];
[item release];
item = [[UITabBarItem alloc] initWithTitle:@"Red" image:nil tag:2];
[controller2 setTabBarItem: item];
[item release];
[tbcontroller setViewControllers:array];
[tbcontroller setSelectedIndex:0];
[window addSubview: [tbcontroller view]];
[tbcontroller release];
[controller1 release];
[controller2 release];
}
코드 발췌 DemoAppViewController에서 :
- (DemoAppViewController *) initWithColor:(UIColor *)color
{
self = [super init];
if (self != nil) {
[color retain];
backgroundColor = color;
}
return self;
}
- (void) updateBackground
{
UIView *view = [self view];
[view setBackgroundColor: backgroundColor];
}
확실히 충돌을 해결합니다. 감사합니다. 하지만 하위 뷰에서 유지되지 않는 이유는 무엇입니까? – Patrick