2011-07-18 16 views
0

私のアプリケーションとiPhoneのアドレス帳との統合に取り組んでいます。ここに私のプログラムの流れがあります。連絡先が選択後にアドレス帳から削除される

  1. ユーザーが接触
  2. アプリケーションをインポートしたいユーザーに「ABPeoplePickerNavigationController」を提示します。
  3. デリゲートメソッドが呼び出される:ここで

コードです:

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker 
     shouldContinueAfterSelectingPerson:(ABRecordRef)person { 
    self.selectedContact = person; 
    [self showNewContactViewThroughController:peoplePicker withRecord:person]; 
    NSLog(@"should continue after selecting"); 
    return NO; 
} 

5:- (void)showNewContactViewThroughController:withRecord:で我々はAbNewPersonViewControllerを作成

  • ユーザーは、彼らがしたい連絡先を選択します。

    `ABNewPersonViewController *newController = [[ABNewPersonViewController alloc] init];` 
    
    `newController.displayedPerson = person;` 
    
    `newController.newPersonViewDelegate = self;` 
    

    次に押してください。

    6:ABNewPersonViewControllerビューを終了するには、「キャンセル」をクリックします。
    7:連絡先アプリを確認すると、手順3で選択した連絡先がなくなりました。偽り、削除、削除、削除

    この問題を解決するために、ABRecordRefをインスタンス変数 "selectedContact"に保存します。その後、- (void)newPersonViewController:didCompleteWithNewPerson:に私が持っている:

    if (person) { 
    //do stuff with the person 
    else { 
         /// 
         /// This means they canceled, so we need to save the old person back 
         /// 
         if (self.selectedContact) { 
          ABAddressBookRef addressBook = ABAddressBookCreate(); 
          CFErrorRef error = NULL; 
          ABAddressBookAddRecord(addressBook, self.selectedContact, &error); 
          if (error != NULL) { 
           NSLog(@"Error Adding Record: %@", error); 
          } 
          ABAddressBookSave(addressBook, &error); 
          if (error != NULL) { 
           NSLog(@"AccountDetailTableViewController.newPersonViewController() The old contact was not saved successfully. %@", error); 
          } 
          self.selectedContact = nil; 
         } 
        } 
    

    しかし、これは何もしていないようです。コードは実行されますが、 "Old Contact"、self.selectedContactはAddressBookに保存されません。だから私の連絡先はまだ消えています。私は間違って何をしていますか?それはABNewPersonViewControllerでキャンセルを押すと、アドレス帳から与えられたデータを "削除"するように見えますか?だから私がそれを与える人は死ぬ?どんな助けもありがとう!

  • 答えて

    2

    この問題は、ABNewPersonViewControllerを使用せず、ユーザーが使用する人を選択した後にABPersonViewControllerを使用して解決しました。情報はもはや削除されていません。

    関連する問題