ios - 如何访问父 View Controller ?

标签 ios iphone cocoa-touch uinavigationcontroller viewcontroller

我正在使用这段代码在 ViewControllerA 中推送一个 View Controller :

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 方法,我如何获取此文本字段的值,这是为了保存数据。

最佳答案

有几种方法可以做到这一点。最好是使用委托(delegate)模式或通知系统。

你选择哪一个取决于你的愿望。如果您只是想让“父 Controller ”知道该值,请使用委托(delegate)方法。

使用委托(delegate)或通知创建松耦合结构并使可重用类成为可能。

编辑:一些示例代码。当心:未经测试且来 self 的脑海!

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
}

关于ios - 如何访问父 View Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2760679/

相关文章:

ios - 如何搜索经过身份验证的用户 Firebase iOS Swift

android - 我可以使用 QT Creator 在 Windows 10 机器上同时为 Android 和 iOS 开发吗?

iphone - ios:如何使用人的手机号码从通讯录中获取缩略图?

iPhone UISlider 有两个拇指/指示器?

带有 CST 的 iOS dateFromString 在设备上不起作用

objective-c - UILabel:在标签上使用 userInteractionEnabled 方法

ios - 我的应用程序因为缺少 "significant account-specific functionality from Google"而被拒绝

iphone - 通过私有(private)框架/API 发送短信

iphone - 像在 iPhone SMS 应用程序中一样实现添加联系人

iphone - Tabbar 应用程序中的 PopViewController