- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
几周来我一直在寻找解决方案,这让我几近绝望。
问题很简单:
直到第三个方面的解决方案众所周知:
- (IBAction)importFromAddressBook
{
ABPeoplePickerNavigationController* picker = [[ABPeoplePickerNavigationController alloc] init];
picker.peoplePickerDelegate = self;
[self presentModalViewController:picker animated:YES];
[picker release];
}
- (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker
{
[self dismissModalViewControllerAnimated:YES];
}
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController*)peoplePicker
shouldContinueAfterSelectingPerson:(ABRecordRef)person
{
[peoplePicker setDisplayedProperties:[NSArray arrayWithObject:[NSNumber numberWithInt:kABPersonEmailProperty]]];
return YES;
}
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker
shouldContinueAfterSelectingPerson:(ABRecordRef)person
property:(ABPropertyID)property
identifier:(ABMultiValueIdentifier)identifier
{
//===PROBLEM=== Now I do have a mail address and I want to have a phone number right afterwards.
//Something like this would be straightforward, but the view does not change this way:
[peoplePicker setDisplayedProperties:[NSArray arrayWithObject:[NSNumber numberWithInt:kABPersonPhoneProperty]]];
//Here misses the important code.
//And only when I also got a phone number through this or a similar method I want to call:
[peoplePicker dismissModalViewControllerAnimated:YES];
//I do not want to start default behaviour with the mailaddress and/or phone number:
return NO;
}
正确的做法似乎是在ModalView的NavigationController上推送一个类似peoplePicker的View,但我不知道怎么做。
如果有人有任何想法那就太好了!
如果你想看到这样的行为,你可以看看亚马逊应用程序:如果你完成订单的第一步,你可以完全按照这种方式选择送货地址:从联系人列表 -> 选择一个人员 -> 选择地址 -> 选择电话号码。在那里,一切(似乎)都发生在模态视图中,只有一个导航层次结构比上面显示的标准代码多了一个层次。
最佳答案
我想这可能是你想要的:
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker
shouldContinueAfterSelectingPerson:(ABRecordRef)person
property:(ABPropertyID)property
identifier:(ABMultiValueIdentifier)identifier
{
ABPersonViewController *controller = [[ABPersonViewController alloc] init];
controller.displayedPerson = person;
controller.displayedProperties = [NSArray arrayWithObject:[NSNumber numberWithInt:kABPersonPhoneProperty]];
controller.personViewDelegate = self;
[peoplePicker pushViewController:controller animated:YES];
[controller release];
return NO;
}
- (BOOL)personViewController:(ABPersonViewController *)personViewController
shouldPerformDefaultActionForPerson:(ABRecordRef)person
property:(ABPropertyID)property
identifier:(ABMultiValueIdentifier)identifierForValue
{
ABMutableMultiValueRef multi = ABRecordCopyValue(person, property);
CFStringRef phone = ABMultiValueCopyValueAtIndex(multi, identifierForValue);
NSLog(@"phone %@", (NSString *)phone);
CFRelease(phone);
ABPeoplePickerNavigationController *peoplePicker = (ABPeoplePickerNavigationController *)personViewController.navigationController;
[peoplePicker dismissModalViewControllerAnimated:YES];
return NO;
}
想法是,创建另一个 ABPersonViewController 实例,并让您的人员选择器推送它,因为 ABPeoplePickerNavigationController 是 NSPeoplePickerNavigationController 的子类。
关于iPhone ABPeoplePickerNavigationController - 如何从地址簿中选择一个人的两个不同多值属性的两个单个条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2330615/
我想调出用户的地址簿,并使用新的 PeoplePicker Controller 对结果进行切片,以仅显示与特定术语匹配的结果。我看到 UIPeoplePickerNavigationControll
我的联系人列表在模拟器中完美显示。它获取电话号码并将其放入文本框中。所以我决定在我的 iPhone 上尝试一下,它实际上执行了我点击的东西。它会调用该号码,而不是将号码放入文本框中。代码如下: - (
有什么方法可以自定义 ABPeoplePickerNavController 数据源吗?我的意思是,我不需要从手机的地址簿中获取成员,而是需要它从数组中获取数据,例如在我的应用程序中。我将从服务器获取
您好,我有一个 ABPeoplePickerNavigationController,在创建时设置其导航栏隐藏。 peoplePickerController.navigationBar.hidden
联系人应用程序中有一个“添加即时消息”按钮。有一些预定义的,如 Skype、MSN、Facebook 等,但您可以添加自定义的。 但是,如果您添加自定义即时消息地址,并使用 ABPeoplePicke
我有一个核心数据堆栈,其中包含一个名为“客户端”的实体。每个客户端都有一个“addressBookID”属性,它指的是地址簿中个人记录的唯一ID。我目前正在使用 fetchedResultsContr
我想使用 ABPeoplePickerNavigationController 但我想自定义 View 。我想要一些联系人的附件图像,并且我想以不同于默认方式的方式对它们进行排序。有办法吗?还是我必须
在使用 ABPeoplePickerNavigationController 时,didSelecPerson 委托(delegate)将在用户选择一个人时被调用,然后 ABPeoplePickerN
Apple 提供了一个名为 PeoplePicker 的示例项目,它启动了一个仅包含具有电子邮件地址的联系人的 ABPeoplePickerNavigationController: ABPeople
我正在检查我的应用程序以消除所有内存泄漏,分析工具使用 abpeoplepickernavigationcontroller 发现了一个泄漏。 我知道这与复制方法有关?但不知道如何在编写时的位置和时间
我只在模拟器中遇到此崩溃。在真实设备上它可以正常工作和调试。(因此它不是太重要,但我正在做一个演示文稿,模拟器很方便。) - (BOOL)peoplePickerNavigationControlle
当使用 ABPeoplePickerNavigationController 时,加载和显示控件需要一些时间(~0.5 秒),这比其他弹出窗口的正常 react 时间要慢。 我的解决方案是将 Cont
我正在使用此代码在应用中显示联系人。 - (IBAction) selectContact:(id)sender { ABPeoplePickerNavigationController *p
几周来我一直在寻找解决方案,这让我几近绝望。 问题很简单: 通过 ABPeoplePickerNavigationController(作为 ModalView),应该选择一个人。 然后仅(例如)显示
我正在对 ABPeoplePickerNavigationController 进行子类化,我想知道如何隐藏正确的工具栏项“Cancel”? 我一直在寻找,但找不到合适的解决方案。 谢谢! 最佳答案
我正在使用 ABPeoplePickerNavigationController 由用户选择地址簿联系人。使用此代码隐藏按钮操作: ABPeoplePickerNavigationController
我想提示用户从地址簿中选择 1 个或多个人,但 ABPeoplePickerNavigationController 不允许这样做(这很讽刺,因为这是人 选择器,而不是人选择器)。 在我创建自己的 C
我在我的应用程序中将 ABPeoplePickerNavigationController 显示为选项卡。用户点击姓名,然后点击电子邮件地址,然后我对电子邮件地址执行一些操作。 之后,我希望他们选择的
我正在使用 ABPeoplePicker 显示联系人列表。 我想过滤此联系人列表,仅显示具有电子邮件地址的联系人。我该怎么做? 最佳答案 我需要它,所以我开始做类似的事情。查看https://gith
我最近将我的 iPhone 和 Xcode 从 iOS 6 升级到 iOS 8,并且遇到了从 ABPeoplePickerNavigationController 选择电话号码或电子邮件地址时执行“默
我是一名优秀的程序员,十分优秀!