1

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

} 

Он отлично работает в ИО 3.x и Ios 5.x, но в IOS 4.x у меня всегда есть кнопка отмены в панели навигации, когда появляется список контактов, но если я выберу контакт, то вернусь к первому контроллеру представления, появится кнопка добавления.

Как объяснить это странное поведение только в iOS 4.x? не

ответ

1

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

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

}

Так что, если вы хотите, чтобы удалить кнопку отмены в ИО 4.x вы должны добавить следующую строку: [сборщика setAllowsCancel: NO]; я получил предупреждение от компилятора, но теперь кнопка отмены снимается в IOS 4.x

0
[picker setAllowsCancel:NO]; 

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