删除ABPeoplePickerNavigationController中的取消按钮。奇怪的行为iOs 4.x
问题描述:
我想删除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?
答
我找到了解决办法:
-(void)viewDidAppear:(BOOL)animated {
NSLog(@"Contacts view did appear");
[super viewDidLoad];
picker = [[ABPeoplePickerNavigationController alloc]init];
[picker setDelegate:self];
[picker setAllowsCancel:NO];
self.picker.navigationBar.tintColor = [UIColor blackColor];
[self presentModalViewController:picker animated:YES];
}
所以,如果你想删除的iOS 4.x的取消按钮,你必须加入这一行: [选择器setAllowsCancel:NO]; 我收到来自编译器的警告,但现在的取消按钮在IOS 4.x的除去
答
[picker setAllowsCancel:NO];
//拾取器是的ABPeoplePickerNavigationController的对象。