簡體   English   中英

在iOS8上將ABPersonViewController推送到ABPeoplePickerNavigationController

[英]Pushing ABPersonViewController to ABPeoplePickerNavigationController on iOS8

介紹人員選擇器

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

在iOS 7中實現ABPeoplePickerNavigationControllerDelegate

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

到現在為止還挺好。 人員視圖控制器按預期方式提供。 iOS7方法返回一個值-可以返回NO以確保人員選擇器保持打開狀態。 在iOS8中,不建議使用上述委托方法,並且必須實現新方法:

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

人員視圖控制器被推到人員選擇器,但是一秒鍾之后,人員選擇器被關閉(與人員視圖控制器一起)。

有沒有一種方法可以防止人員選擇器在iOS8上被解雇? 還有其他建議嗎?

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

如何使用presentViewController而不是pushViewController ...在Xcode 6中,它說pushViewController已過時,我看到您正在嘗試在iOS8中實現它,因此請嘗試一下...像這樣的一行:

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

在iOS8中,初始化ABPeoplePickerNavigationController時,需要添加以下代碼,否則peoplePickerNavigationController將在您選擇聯系人后立即關閉。

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

暫無
暫無

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

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