0

iPhone 用のカスタム AddressBook (ABPeoplePickerViewController) についてサポートが必要ですか? すべての連絡先を含む配列を作成し、名前と番号だけをテーブルビューのセルに引っ張って表示したいと考えています.いくつかの連絡先を選択し、メッセージを開いて、カスタムメッセージを含むテキスト/SMSを送信します..

WhatsApp メッセンジャーは素晴らしい例です。[設定]、[友達に教える]、[メッセージ] の順に移動すると、その外観が欲しいです!

連絡先ピッカービュー 下の[送信]ボタンと[キャンセル]ボタン、およびサブタイトルスタイルのテーブルビューのcell.textLabelの名前とcell.detailTextLabelの番号も必要なので、カスタムにする必要があります。

では、アドレス帳から配列 (contactsName、contactsNumber) に詳細を取得するにはどうすればよいでしょうか? 前もって感謝します!これが私のコードです:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [_tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
    }

    cell.textLabel.text = [contactsName objectAtIndex:indexPath.row];
    cell.detailTextLabel.text = [contactsNumber objectAtIndex:indexPath.row];

    return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
}

- (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker
{
    [self dismissViewControllerAnimated:YES completion:^{ NSLog(@"Message controller has been canceled"); }];
}

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person
{
    NSString *name = (__bridge_transfer NSString*)ABRecordCopyValue(person, kABPersonFirstNameProperty);
    NSString *number = (__bridge_transfer NSString*)ABRecordCopyValue(person, kABPersonPhoneProperty);
    NSLog(@"Name: %@ Number: %@", name, number);

    return NO;
}

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier
{
    return NO;
}

- (void)openSMScontroller {
    MFMessageComposeViewController *smsView = [[MFMessageComposeViewController alloc] init];
    smsView.messageComposeDelegate = self;

    smsView.recipients = [NSArray arrayWithArray:contactsNumber];
    smsView.body = @"Check out this awesome app!";

    [self presentModalViewController:smsView animated:YES];
}
4

2 に答える 2

2

以下のコードでアドレス帳から必要なものを取得できます.!!!!!

ハッピーコーディング!!!!!!!!

- (BOOL)peoplePickerNavigationController: (ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person {
 ABMultiValueRef phoneNumbers = ABRecordCopyValue(person, kABPersonPhoneProperty);
   ABMultiValueRef addressProperty = ABRecordCopyValue(person, kABPersonAddressProperty);
 NSArray *address = (NSArray *)ABMultiValueCopyArrayOfAllValues(addressProperty);
if([address count] > 0)
{
    for (NSDictionary *addressDict in address)
    {
        countrytf.text = [addressDict objectForKey:@"Country"];
        streetaddresstf.text = [addressDict objectForKey:@"Street"];
        citynametf.text = [addressDict objectForKey:@"City"];
        statenametf.text = [addressDict objectForKey:@"State"];
        zipcodetf.text = [addressDict objectForKey:@"ZIP"];

    }
    CFRelease(addressProperty);
}
}
于 2012-12-11T09:56:12.623 に答える
0

電話番号を取得するには...

ABMultiValueRef phoneNumbers = ABRecordCopyValue(person, kABPersonPhoneProperty); 
 NSString*    phone = (NSString*)ABMultiValueCopyValueAtIndex(phoneNumbers, 0); 

 nslog(@"phone:%@",phone); 

それが機能しているかどうかを教えてください!!!!!!それが正しい場合は報酬を与えてください..

ハッピーコーディング

于 2012-12-11T12:48:30.240 に答える