【问题标题】:Return Selected Phone Address from iPhone Address Book从 iPhone 通讯簿返回选定的电话地址
【发布时间】:2010-03-25 16:18:35
【问题描述】:

我在网上找到了一个教程,该教程扩展了 Apple QuickStart 应用程序,它是基本的通讯簿应用程序,另一个无论点击了哪个电话号码,都会返回第一个电话号码。我只想在标签中显示选定的电话号码。这个标签叫做phoneNumber:

- (BOOL)peoplePickerNavigationController:

(ABPeoplePickerNavigationController *)peoplePicker

  shouldContinueAfterSelectingPerson:(ABRecordRef)person

                            property:(ABPropertyID)property

                          identifier:(ABMultiValueIdentifier)identifier{


ABMutableMultiValueRef phoneMulti = ABRecordCopyValue(person, kABPersonPhoneProperty);
NSMutableArray *phones = [[NSMutableArray alloc] init];
int i;
for (i = 0; i < ABMultiValueGetCount(phoneMulti); i++) {
NSString *aPhone = [(NSString*)ABMultiValueCopyValueAtIndex(phoneMulti, i)autorelease];

    [phones addObject:aPhone];
}

NSString *mobileNo = [phones objectAtIndex:0];
self.phoneNumber.text = phones;

[self dismissModalViewControllerAnimated:YES];

return NO;

}

如何确保标签是用户选择的标签,而不仅仅是第一个数组条目(或我在其中编码的任何其他数组条目)

谢谢

【问题讨论】:

    标签: iphone objective-c xcode addressbook


    【解决方案1】:

    我不确定我是否理解您的问题,但如果您想获取电话号码和/或您的用户实际选择的标签,您可以使用:

        - (BOOL)peoplePickerNavigationController: (ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier {
            // ensure user picked a phone property
            if (property == kABPersonPhoneProperty) {
                ABMultiValueRef phone = ABRecordCopyValue(person, property);
                CFStringRef selectedNumber = ABMultiValueCopyLabelAtIndex(phone, identifier);
                CFStringRef selectedLabel = ABMultiValueCopyValueAtIndex(phone, identifier);
                // insert code to do something with the values above
                [self dismissModalViewControllerAnimated:YES];
                return NO; } // end if
            else {
                // display an alert or something - handle the error
    } } // end else, end method
    

    我没有遵循你的代码 sn-p - 如果你想要的只是用户选择的选择,我不确定你使用数组的目的。

    【讨论】:

    • 我试过这个答案,我可以选择标有“手机”、“工作”和“家”的电话号码。 But when "iPhone" is selected, my app crashed.这个post 解决了这个问题。希望这能帮助和我有同样问题的人。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多