因此,我已经看过大多数教程(并且正在使用该技术)在 segue 是推送时(在 prepareForSegue 方法中)将数据从一个视图控制器传递到下一个视图控制器。我可以将其destinationViewController
转换为我的自定义类并将数据推送到自定义属性中。
但是,当我尝试为 Embed Segue(iOS6 中允许容器视图工作的新版本)执行此操作时,destinationViewController 似乎不正确;它只是一个 UIViewController,而不是我在故事板中定义的自定义类。
如您所见,我的主表视图带有开始日期和结束日期。然后我有一个使用容器视图嵌入的子视图。这有一个用于命令日期的工具栏 + 一个 UIDatePicker。
我的问题是我需要主表视图控制器具有来自日期选择器的事件侦听器(UIControlEventValueChanged
用于更新标签)。父控制器看不到日期选择器。两个视图控制器都实现了自定义类。日期选择器控制器类将日期选择器作为 IBOutlet 对象,并且 3 个日期范围按钮选择了更改日期的方法。
看来我的问题是两个视图控制器之间的上下文。
仅供参考:我需要将它们分开,以便我可以切换日期选择器小部件和工具栏的可见性。
更新 1:
我找到了一种解决方法,它在父级的准备序列中,将“自我”引用传递给具有父视图控制器类型属性的子级。这为孩子提供了对其父母的正确引用,然后我可以执行以下操作:
-(void) viewDidLoad {
[[self datePicker] addTarget:[self graphSettingsViewController] action:@selector(datePickerValueChanged:) forControlEvents:UIControlEventValueChanged];
}
这有效,但感觉“混乱”。有任何想法吗?