0

このコードを使用して、View Controller をプッシュしていますViewControllerA

DatePickerViewController *viewController = [[DatePickerViewController alloc] initWithNibName:@"DatePickerViewController" bundle:nil];
NSMutableArray *info = [[NSMutableArray alloc] initWithObjects:@"Exam Duration",nil];
[viewController setInfo:info];
[info release];
[self.navigationController pushViewController:viewController animated:YES];
[viewController release];

スライドさせたDatePickerViewController中に、テキストフィールドがあります。ViewControllerAメソッドが起動されたら、このテキストフィールドの値を取得するにはどうすればよいですか?それviewWillDisappearはデータを保存することです。

4

1 に答える 1

2

これを行うにはいくつかの方法があります。デリゲート パターンまたは通知システムを使用することをお勧めします。

どちらを選ぶかはあなたの好み次第です。「親コントローラー」に値を知らせたいだけの場合は、デリゲート メソッドを使用します。

デリゲートまたは通知を使用すると、疎結合構造が作成され、再利用可能なクラスが可能になります。

編集: いくつかのサンプル コード。注意してください:テストされておらず、私の頭の上から!

DatePickerViewController.h

@protocol DatePickerViewControllerDelegate
    -(void)datePicker:(DatePickerViewController *)picker pickedDate:(NSDate *)date;
@end

DatePickerViewController.m

- (void)viewWillDisappear:(BOOL)animated {
    [self.delegate datePicker:self pickedDate:theDate]; //Delegate is an ivar
    [super viewWillDisappear:animated];
}

ViewControllerA.m

//
DatePickerViewController *viewController = [[DatePickerViewController alloc] initWithNibName:@"DatePickerViewController" bundle:nil];
NSMutableArray *info = [[NSMutableArray alloc] initWithObjects:@"Exam Duration",nil];
[viewController setInfo:info];
[info release];
[viewController setDelegate:self]; // Set the delegate of the date picker
[self.navigationController pushViewController:viewController animated:YES];
[viewController release];
//

-(void)datePicker:(DatePickerViewController *)picker pickedDate:(NSDate *)date; {
     //Deal with the new date here
}
于 2010-05-03T19:43:32.997 に答える