ABPeoplePickerNavigationControllerのナビゲーションバーにある[キャンセル]ボタンを削除するには、追加ボタンが必要です。 私は、このようにナビゲーションコントローラデリゲートをカスタマイズした:ABPeoplePickerNavigationControllerのキャンセルボタンを削除します。 iOS 4.xの不思議な動作
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{
switch ([navigationController.viewControllers count]) {
case 0: {
viewController.navigationItem.rightBarButtonItem = nil;
break;
}
case 1: {
viewController.navigationItem.rightBarButtonItem = nil;
break;
}
case 2: {
UIBarButtonItem *addButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addPerson:)];
[viewController.navigationItem setRightBarButtonItem:addButtonItem animated:NO];
[addButtonItem release];
UIBarButtonItem *cancelButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancel:)];
[viewController.navigationItem setLeftBarButtonItem:cancelButtonItem animated:NO];
[cancelButtonItem release];
NSLog(@"View 2 %@",viewController.navigationItem.rightBarButtonItem);
break;
}
case 3: {
UIBarButtonItem *editButtonItem;
if ([viewController isKindOfClass:[ABPersonViewController class]]) {
editButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(editPerson:)];
self.personView = (ABPersonViewController*) viewController;
self.personView.allowsEditing = YES;
self.personView.personViewDelegate = self;
[viewController.navigationItem setRightBarButtonItem:editButtonItem animated:NO];
[editButtonItem release];
} else {
// ABPersonNewViewController
//No need to add codes here
}
break;
}
default: {
break;
}
}
それは、IOS 3.xとのiOS 5.xのでは正常に動作しますが、のiOS 4.xで私はいつもナビゲーションバーのキャンセルボタンを持っている場合連絡先リストが表示されますが、連絡先を選択すると、最初の表示コントローラーに戻り、追加ボタンが表示されます。
この奇妙な動作は、iOS 4.xでのみ説明できますか?