0

呈現在人們的iOS 7推ABPersonViewController到的ABPeoplePickerNavigationController iOS8上

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person { 
    ABPersonViewController *personViewController = [[ABPersonViewController alloc] init]; 
    personViewController.displayedPerson = person; 
    [peoplePicker pushViewController:personViewController animated:YES]; 
    return NO; 
} 

到目前爲止好選取器

ABPeoplePickerNavigationController *peoplePicker = [[ABPeoplePickerNavigationController alloc] init]; 
peoplePicker.allowsActions = YES; 
peoplePicker.allowsEditing = NO; 
peoplePicker.peoplePickerDelegate = self; 
[self presentViewController:peoplePicker animated:YES completion:nil]; 

實施ABPeoplePickerNavigationControllerDelegate。人員視圖控制器按預期呈現。 iOS7方法返回值 - 可以返回以確保人員選取器保持打開狀態。在iOS8上上述委託方法已被廢棄和新方法必須實現:

- (void)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker didSelectPerson:(ABRecordRef)person { 
    ABPersonViewController *personViewController = [[ABPersonViewController alloc] init]; 
    personViewController.displayedPerson = person; 
    [peoplePicker pushViewController:personViewController animated:YES]; 
} 

的人視圖控制器被推向人選擇器,但第二人拾取器的一小部分後駁回(與人視圖一起控制器)。

有沒有辦法阻止人們在iOS8上解僱人員?還有其他建議嗎?

+1

你在做什麼總是錯的。將ABPersonViewController推到ABPeoplePickerNavigationController上是不正確的。重新思考你的界面。 – matt 2014-10-30 20:12:03

+0

基本上,你想達到什麼目的?爲什麼不讓人們選擇器向你展示這個人呢? – Rob 2014-10-30 20:46:38

+1

@Rob我希望ABPersonViewController顯示默認情況下不顯示的操作按鈕。 – mrvincenzo 2014-10-30 20:49:32

回答

0
-(void)peoplePickerNavigationController:(ABPeoplePickerNavigationController*)peoplePicker didSelectPerson:(ABRecordRef)person 
{ 
    [self dismissViewControllerAnimated:NO completion:^{ 
     ABPersonViewController *personController = [[ABPersonViewController alloc] init]; 

     [personController setDisplayedPerson:person]; 
     [personController setPersonViewDelegate:self]; 
     [personController setAllowsEditing:NO]; 
     personController.displayedProperties = [NSArray arrayWithObjects:[NSNumber numberWithInt:kABPersonPhoneProperty], nil]; 

     [self.navigationController pushViewController:personController animated:YES]; 
    }]; 
} 
0

如何使用presentViewController代替pushViewController ...在Xcode 6它說,pushViewController已棄用,我看你想實現它在iOS8上這樣試試看...... 像這樣的東西線:

[peoplePicker presentViewController: personViewController animated: YES completion: nil]; 
+0

我有確切的例子,但它是迅速...所以我認爲這應該工作。 – 2014-10-31 14:37:45

+0

它有效,但它不是我所要求的。謝謝。 – mrvincenzo 2014-11-04 12:27:22

+0

大概我不明白你的問題。你只是想顯示動作按鈕? – 2014-11-04 15:45:51

0

在iOS8上,你將需要添加代碼,當您初始化的ABPeoplePickerNavigationController下方,否則你選擇聯繫人後peoplePickerNavigationController將解僱的時候了。

if(IOS8_OR_LATER){ 
    peoplePicker.predicateForSelectionOfPerson = [NSPredicate predicateWithValue:false]; }