簡體   English   中英

刪除ABPeoplePickerNavigationController中的取消按鈕。 iOs 4.x中的奇怪行為

[英]Remove cancel button in ABPeoplePickerNavigationController. Strange behavior in iOs 4.x

我想刪除ABPeoplePickerNavigationController導航欄中的取消按鈕,因為我想要一個添加按鈕。 我以這種方式自定義了導航控制器委托:

- (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中刪除“取消”按鈕,則必須添加以下行:[picker setAllowsCancel:NO]; 我收到了來自編譯器的警告,但現在在iOS 4.x中取消了“取消”按鈕

[picker setAllowsCancel:NO];

// picker是ABPeoplePickerNavigationController的對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM