0

非常に基本的な「連絡先の追加」ボタンの実装の途中です。コードを使用して「ビューの追加」を呼び出しています(リンクされたUIButtonを介して動作します):

- (IBAction)showAddContact {
 NSLog(@"Hit showAddContact");

 ABNewPersonViewController *newPersonViewController = [[ABNewPersonViewController alloc] init];

 addContactNavController = [[UINavigationController alloc] initWithRootViewController:newPersonViewController];
 [self presentModalViewController:addContactNavController animated:YES];
}

そして、次のデリゲートの応答も設定しました。

- (void)newPersonViewController:(ABNewPersonViewController *)newPersonViewController didCompleteWithNewPerson:(ABRecordRef)person {
  NSLog(@"Hit newPersonViewController");
 //ABContact *contact = [ABContact contactWithRecord:person]; 
 [self.navigationController popViewControllerAnimated:YES];
}

ヘッダーに設定しました:

#import <UIKit/UIKit.h>
#import <AddressBook/AddressBook.h>
#import <AddressBookUI/AddressBookUI.h>

@interface test2ViewController : UIViewController <ABNewPersonViewControllerDelegate> {
UINavigationController* addContactNavController;
}

- (IBAction)showAddContact;

@end

フレームワーク Addressbook と AddressBookUI を追加しました。

追加ダイアログ ボックスが期待どおりに表示され、連絡先を編集できますが、ビューからモーダル ビュー コントローラーを削除できません。

ここで入手できる簡単なテストプロジェクトで問題を再現しました:リンクテキスト

私は何を見逃していますか?、それは非常に単純なものだと思います。ありがとう@norskben

4

1 に答える 1

3

いくつかの問題:

あなたはそれを提示しreleaseた後にすべきです。ABNewPersonViewController

ABNewPersonViewControllerモーダル ダイアログとして表示しpresentModalViewController:ますが、 で押されたかのように画面から削除しUINavigationControllerますpopViewControllerAnimated:。代わりに、プッシュしてポップするか、提示して却下する必要があります。(これが何を意味するのかわからない場合は、View Controller のドキュメントを少し読んでください)

ABNewPersonViewControllerDelegateプロトコルを実装しても、 のdelegateプロパティを設定することはありませんABNewPersonViewController

于 2010-03-04T02:56:46.570 に答える