0

我正在尝试更改联系人表的某些属性,但我不能。首先,我需要删除取消按钮并设置一个“添加”按钮。我尝试使用委托方法将其设置为 nil,但它没有用。

它起作用的唯一方法是:

 [picker setAllowsCancel:NO];

这给出了一个警告:(我不想冒险)

instance method not found

我还需要删除“组”按钮。

所以在底线,我想从上栏中删除所有按钮,并设置我自己的按钮。我该怎么做?

谢谢 。

4

1 回答 1

0

咆哮,你不能使用方法:

[picker setAllowsCancel:NO];

这是 Apple 的私有 API(非公开),他们会拒绝您的应用。

ABPeoplePickerNavigationController *tempABPNC = [[ABPeoplePickerNavigationController alloc] init];
tempABPNC.peoplePickerDelegate = self;
tempABPNC.delegate = self;
[self presentModalViewController:tempABPNC animated:YES];
[tempABPNC release];

您必须添加“ tempABPNC.delegate = self; ”然后实现 UINavigationControllerDelegate 方法:

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{
viewController.title = @"选择联系人";
tinlnTempVC = viewController;
viewController.navigationItem.leftBarButtonItem = nil;
UIViewController *tempABVC = [navigationController.viewControllers lastObject];
tempABVC.title = @"选择联系人";
if([viewController.view.subviews count]==0){ //if user disable app open contact,you can create your own view,
    UIView *tempV=[[UIView alloc]initWithFrame:CGRectMake(0, 0, 320, IS_IPHONE5 ? 504 : 416)];
    ...
    ...
    viewController.view = tempV;
    [tempV release];
}}

在这个viewcontroller中,子类ABPeoplePickerNavigationController,所以我们可以用我们自己的按钮替换navigationleft、right、backitem

static UIViewController *tinlnTempVC;
@implementation ABPeoplePickerNavigationController (tinlnCustom)

- (void)viewWillLayoutSubviews{
if ([[[UIDevice currentDevice] systemVersion] floatValue] < 5.0)
    return;
UIButton *dismisBtn = [UIButton DIYNavigationBarItemBtnWithTitle:@"返 回" NC:tinlnTempVC.navigationItem];
[dismisBtn addTarget:self action:@selector(backToPayPhone) forControlEvents:UIControlEventTouchUpInside];}

- (void)backToPayPhone{
[self dismissModalViewControllerAnimated:YES];}


@end

希望对你有帮助,咆哮,这个方法在iOS 5.0-6.1运行完美,在iOS 4.3-5.0第一次显示backitem无法替换。

于 2013-04-25T09:45:42.873 回答