我正在构建一个简单的Core Data应用程序,以尝试了解Core Data。它有两个实体:气象站和给定台站的观测集合。
我为此创建了初始界面,方法是在我的窗口上放置一个标签视图,选择第一个标签,然后将气象站实体拖到该视图上;然后选择第二个选项卡并将观察实体拖到第二个选项卡上。
然后我自己创建了第三个标签,并在顶部添加了一个弹出窗口。这个弹出窗口绑定到StationArrayController,因此它填充了我添加的所有气象站。这很有效。
然后,我添加了一个表格视图,以显示与所选工作站关联的观察。这也很有效。我使用一种方法实现了这一点,该方法创建一个谓词,搜索其站点与所选站点匹配的所有观测值,并将谓词附加到与第三个选项卡上的表格视图关联的ObservationArrayController。 (我无法弄清楚如何在IB中执行此操作,因此我以编程方式执行此操作。)
错误是这样的:如果我加载以前保存的文件,其中包含气象站和观测值,当我转到第三个标签时,即使其中一个站被选中(即,出现在弹出窗口中,观察的所有出现在tableview中,而不仅仅是与该站相关的那些。
这是因为我没有调用方法将谓词附加到观察阵列控制器,直到我实际使用弹出窗口手动更改站点。
所以我的问题和问题就是这个(很抱歉这需要很长时间才能达到这一点!):如何检测选项卡视图何时加载,以便我可以强制连接谓词的方法运行,从而有一个与所选电台匹配的初始观测清单?
我尝试创建一个自定义View类并将其子类化为第三个选项卡视图并将此代码放在awakeFromNib方法中,但这在过程中还为时过早(此时“选定的工作站”为-1)处理)。
非常感谢任何帮助。谢谢!!
伊丽莎白
答案 0 :(得分:1)
啊,我刚回答了自己的问题!
我将tabview的委托设置为MyDocument,并实现了tabView:didSelectTabViewItem:那里。我在MyDocument中创建了一个指向第三个选项卡视图的IBOutlet,并在此方法中检查是否选择了第三个选项卡,如果是,则调用将谓词附加到ObservationArrayController的方法。效果很棒!