2010-03-25 84 views
0

我在線發現了一個教程,擴展了Apple QuickStart應用程序(基本地址簿應用程序)和另一個返回第一個電話號碼(不管單擊了哪個電話號碼)的教程。我只想在標籤中顯示選定的電話號碼。標籤被稱爲電話號碼:從iPhone地址簿返回所選電話地址

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

} 

如何確保標籤是一個由用戶選擇,而不僅僅是第一個數組條目(或任何其他陣列i項代碼)

感謝

回答

2

我不知道我理解你的問題,但如果你想獲得的電話號碼和/或標籤用戶實際選擇,您可以使用此:

- (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 

我不是t遵循你的代碼片斷 - 不確定你使用的數組是什麼,如果你想要的只是用戶選擇的選擇。

+0

謝謝,那是做的。 – Ali 2010-03-27 12:58:03

+0

我試過這個答案,我可以選擇標記爲「移動」,「工作」和「家庭」的電話號碼。但是當選擇「iPhone」時,我的應用程序崩潰。這[後](http://stackoverflow.com/a/12006985/1479411)解決了這個問題。希望這可以幫助那些和我有同樣問題的人。 – Rick 2012-08-29 16:55:32