我正在使用此代码在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
方法被触发,如何获取此文本字段的值,就是保存数据。
答案 0 :(得分: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
}