我有一个简单的核心数据应用程序,我正在构建,试图理解核心数据。它有两个实体:一个气象站和一个给定观测站的观测集合。
为此,我在窗口上放置一个选项卡视图,选择第一个选项卡,并将气象站实体拖到该视图上,然后选择第二个选项卡并将观测实体拖到第二个选项卡上,从而创建了初始接口。
然后我自己创建了第三个选项卡,并在顶部添加了一个弹出窗口。此弹出窗口绑定到StationArrayController,因此它填充了我添加的所有气象站。这个很好用。
然后,我添加了一个表视图来显示与所选站点相关联的观测结果。这也很好用。我用一种方法实现了这一点,该方法创建一个谓词,该谓词搜索与所选站点匹配的所有观测,并将谓词附加到与第三个选项卡上的Table关联的ObservationArrayController上。(我不知道如何在IB中这样做,所以我用编程的方式完成了)。
错误是这样的:如果我加载以前保存的带有气象站和观测的文件,当我转到第三个选项卡时,即使其中一个站点被选中(即,它出现在弹出窗口中),所有的观察结果都会出现在表视图中,而不仅仅是与该站点相关的。
之所以会发生这种情况,是因为在实际使用弹出窗口手动更改站点之前,我不会调用将谓词附加到观察阵列控制器的方法。
因此,我的问题和问题是,(很抱歉,花了这么长时间才到达这一点!):我如何才能检测到选项卡视图何时加载,以便强制运行附加谓词的方法,从而获得与所选站点匹配的初始观察列表?
我尝试创建一个定制的View类,并将其子类化为第三个选项卡视图,并将其放入awakeFromNib方法中,但这在进程中还为时过早(在加载过程中,“SelectedStations-1”)。
任何帮助都将不胜感激。谢谢你!!
伊丽莎白
发布于 2009-11-20 23:09:25
啊,我刚刚回答了我自己的问题!
我将表视图的委托设置为MyDocument,并实现了tabView:didSelectTabViewItem: there。我在MyDocument中创建了一个指向第三个选项卡视图的MyDocument,并在此方法中检查是否选中了第三个选项卡,如果选中了,则调用该方法将谓词附加到ObservationArrayController。效果很好!
https://stackoverflow.com/questions/1773538
复制相似问题