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