私は、アドレス帳を呼び出す複数のビューを持っているというシナリオです。したがって、各ビューでデリゲートのコードを複製しないように、私はApp Delegateのヘッダーと.mファイルにコードを配置しましたが、2つのアプリケーションの下部に「@interface AddressBookDelegate」と「@implementation AddressBookDelegate」を使用しています書籍はすべてのビューで細かい表示peoplePickerDelegateがデリゲート権限のアドレスを取得できないのはなぜですか?
addressBookDelegate = (AddressBookDelegate *) [[UIApplication sharedApplication] delegate];
ABPeoplePickerNavigationController *abPicker = [[ABPeoplePickerNavigationController alloc]init];
abPicker.peoplePickerDelegate = self.addressBookDelegate;
[self presentModalViewController:abPicker animated:YES];
[abPicker release];
住所:委任fiies-
@interface AddressBookDelegate : UIViewController <ABPeoplePickerNavigationControllerDelegate> {
AddressBookDelegate *addressBookDelegate;
}
@property (nonatomic, retain) AddressBookDelegate *addressBookDelegate;
@end
と
@implementation AddressBookDelegate
@synthesize addressBookDelegate;
- (void)peoplePickerNavigationControllerDidCancel: (ABPeoplePickerNavigationController *)peoplePicker
{
[self dismissModalViewControllerAnimated:YES];
}
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person
{
[super dismissModalViewControllerAnimated:YES];
...get stuff from the Address Book...
return NO;
}
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person
property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier
{
return NO;
}
はその後、私の見解では、私は次のコードを持っています。私は、デリゲートを呼び出します任意のユーザーの行動を取るときには、アドレス帳のキャンセルボタンのように、私は
をcrash- - [MyprogAppDelegate peoplePickerNavigationControllerDidCancel:]:認識されていないセレクタはインスタンスに
を送ったそれはきれいにコンパイル、警告なし。
peoplePickerDelegateを物理的にビュー自体と同じファイルにないときに、アドレス代理コードに接続するにはどうすればよいですか?どうも。
注意事項を追加しました:私は、デバッガを使用してビューのコードで
abPicker.peoplePickerDelegate = addressBookDelegate;
ライン上に停止したときに、私のようにAddressBookDelegateない、addressBookDelegateのためのアドレスはMyprogAppDelegateのアドレスであると記載されていることがわかり期待したかもしれない。それで、私は、アドレス帳代理コードへの置き換えがApp Delegateファイル内でオフになっていると思います。
AddressBookDelegate Cancel DelegateコードがAddressBookDelegateに1000バイトであると、私のアプリは実際にはMyprogAppDelegateにコード1000バイトを "入力"しているのでクラッシュします。だから何とか私はAddressBookDelegateのアドレス指定を正しく設定していません。それはとにかくそれが私の感想です...
それはそれを持って、申し訳ありませんが、私はそれが明らかになったと想定。私は質問にそれを加えました。だから、App Delegateにある人々ピッカーの委任コードがそこにあります。それに取り組んで、私がそれに対処するのに間違った何かがあります。 Plsは何かを明確にするために質問の最後に追加されたテキストを書き留めます。 – Ric