iOS 6通过ABPeoplePickerNavigationController创建新联系人

时间:2013-01-10 13:46:29

标签: ios addressbook addressbookui

我正在尝试关注Apple的地址簿编程指南,并对peoplePickerController有疑问。来自Apple教程的示例照片右上角有“加号”按钮,似乎可以让用户通过peoplePickerController添加新的联系人。

我通过

调用了ABPeopleNavigationControllerPicker

- (void)showPicker
{
    ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init];
    picker.peoplePickerDelegate = self;

    [self presentViewController:picker animated:YES completion:nil];
}

但屏幕右上角有一个取消按钮,而不是加号按钮。是否有任何选项可以更改按钮或允许用户通过此视图控制器添加新联系人?

谷歌搜索了很长一段时间之后,我发现了以下内容。所以我尝试以编程方式更改条形按钮......


- (void)addPerson
{
    ABNewPersonViewController *newPersonVC = [[ABNewPersonViewController alloc] init];
    newPersonVC.newPersonViewDelegate = self;
    UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:newPersonVC];
    [self presentViewController:nc animated:YES completion:nil];
}
- (void)showPicker
{
    ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init];
    picker.topViewController.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addPerson)];
    picker.peoplePickerDelegate = self;
    [self presentViewController:picker animated:YES completion:nil];
}

然而,不知何故,条形按钮仍然固定为“取消”而不是“添加”......

3 个答案:

答案 0 :(得分:2)

在iOS 7上我需要稍后设置这些按钮......

 - (void)showPicker
 {
     ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init];
      picker.peoplePickerDelegate = self;
     [self presentViewController:picker animated:YES completion:nil];
   [picker.topViewController setEdit:YES];
   [self performSelector:@selector(setThemBuddons:) withObject:picker afterDelay:0.1];
}

-(void)setThemBuddons:(ABPeoplePickerNavigationController*)picker;
{
     picker.topViewController.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addPerson)];

}

答案 1 :(得分:0)

没关系,我现在就开始工作了。看来我需要在覆盖它的按钮之前呈现ViewController ......


- (void)showPicker
{
    ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init];
    picker.peoplePickerDelegate = self;
    [self presentViewController:picker animated:YES completion:nil];
    [picker.topViewController setEdit:YES];
    picker.topViewController.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addPerson)];
}

答案 2 :(得分:-1)

您只需要在addPerson方法中进行一些小修改。

用于显示联系人:

- (无效)showPicker

{

ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController       alloc] init];
  picker.peoplePickerDelegate = self;
  [self presentViewController:picker animated:YES completion:nil];
  [picker.topViewController setEdit:YES];
  [self performSelector:@selector(addContact:) withObject:picker afterDelay:0.1];

}

- (无效)的addContact:(的ABPeoplePickerNavigationController *)选择器;

{

picker.topViewController.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addPerson)];

}

通过此代码,您将在右上角获得一个加号以添加联系人。

我们正在使用@selector。

- (无效)addPerson的

{

ABNewPersonViewController *newPersonVC = [[ABNewPersonViewController 
alloc] init];
newPersonVC.newPersonViewDelegate = self;
UINavigationController *nc = [[UINavigationController alloc]     initWithRootViewController:newPersonVC];

//这是执行工作的行代码。通过使用self.presentedViewController我们可以//获取添加联系人屏幕,否则我们将得到像空视图层次结构的错误。

    [self.presentedViewController presentViewController:nc animated:YES completion:nil];

}

相关问题