Удалите кнопку отмены в ABPeoplePickerNavigationController. Странное поведение в iOs 4.x - PullRequest
1 голос
/ 02 февраля 2012

Я хотел бы удалить кнопку отмены на панели навигации 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?

Ответы [ 2 ]

1 голос
/ 03 февраля 2012

Я нашел решение:

-(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

0 голосов
/ 16 мая 2012
[picker setAllowsCancel:NO];

// средство выбора является объектом ABPeoplePickerNavigationController.

...