私はデリゲートデザインパターンを実装しようとしています。前のビューコントロールにデータを渡すことができません
私はfollowsm
- ように2つのView Controllerを持ってCallViewViewController
- CEPeoplePickerNavigationController
これは私の実装ではCallViewViewController
@interface CallViewViewController()<CEPeoplePickerNavigationControllerDelegate>{
}
@property(nonatomic)CustomMessageClass * customMessageClassObject;
@end
の私のインターフェース定義ですが、私はオブを持っています履修したコースこれは私の第二のクラスのインターフェース定義です
-(void)cePeoplePickerNavigationController:(CEPeoplePickerNavigationController *)peoplePicker didFinishPickingPeople:(NSArray *)peopleArg values:(NSDictionary *)valuesArg
{
NSLog(@"can populate the tableview");
}
デリゲートメソッド、
@protocol CEPeoplePickerNavigationControllerDelegate;
@interface CEPeoplePickerNavigationController : UIViewController <UITableViewDelegate,UITableViewDataSource>{
id<CEPeoplePickerNavigationControllerDelegate> peoplePickerDelegate;
ABAddressBookRef addressBook;
}
@property (nonatomic, assign) id<CEPeoplePickerNavigationControllerDelegate> peoplePickerDelegate;
@property (nonatomic, retain) CEPeoplePickerNavigationController *ppnc;
@end
@protocol CEPeoplePickerNavigationControllerDelegate <NSObject>
- (void)cePeoplePickerNavigationController:(CEPeoplePickerNavigationController *)peoplePicker didFinishPickingPeople:(NSArray*)people values:(NSDictionary *)values;
@end
ユーザーを押すボタン、Imは次のコードを実行して提出する
、if ([self.ppnc.peoplePickerDelegate respondsToSelector:@selector(cePeoplePickerNavigationController:didFinishPickingPeople:values:)])
[self.ppnc.peoplePickerDelegate cePeoplePickerNavigationController:self.ppnc didFinishPickingPeople:sortedPeople values:[NSDictionary dictionaryWithDictionary:self.selectedValues]];
しかし、データ以前のビューコントローラに戻されていません。なぜそうなのか?
UPDATE
iが
CEPeoplePickerNavigationController *nextVC = [self.storyboard instantiateViewControllerWithIdentifier:@"PeoplePickerNavigationController"];
nextVC.peoplePickerDelegate = self;
[self presentViewController:nextVC animated:YES completion:nil];
、第2のビューコントローラに最初のフォームを移動するために、次のコードを試みたが、それは次のエラーをスローし、
は、キャッチされない例外によるアプリ '終了NSInvalidArgumentException '、reason:' - [UINavigationController setPeoplePickerDelegate:]:インスタンスに送信された認識できないセレクタ0x101054800 '
最初のView Controllerはデリゲートを受け入れていますか? –
なし...最初のビューコントローラのデリゲートは、私は完全なソリューションが、 'peoplePickerDelegate'に' self'を渡さないでくださいアプリ –
イム呼び出されていません。 'CallViewViewController'オブジェクトを渡します。 –