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; 
    } 

} 

それは、IOS 3.xとのiOS 5.xのでは正常に動作しますが、のiOS 4.xで私はいつもナビゲーションバーのキャンセルボタンを持っている場合連絡先リストが表示されますが、連絡先を選択すると、最初の表示コントローラーに戻り、追加ボタンが表示されます。

この奇妙な動作は、iOS 4.xでのみ説明できますか?

答えて

1

私は解決策が見つかりました: [ピッカーsetAllowsCancel:NO]あなたはこの行を追加する必要がありますの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]; 

}

を。 ピッカーがABPeoplePickerNavigationControllerの目的である//私は、コンパイラから警告を受けたが、現在、Theは

0
[picker setAllowsCancel:NO]; 

のiOS 4.xでボタンが削除され、キャンセル。

関連する問題