2009-11-20 40 views
1

我有一个简单的Core Data应用程序,用于了解Core Data。它有两个实体:一个气象站和一个给定站的观测值集合。可可核心数据和选项卡视图 - 如何判断选项卡视图何时完成“加载”,以便我可以让视图自行初始化?

我为此创建了初始界面,方法是在我的窗口中放置一个选项卡视图,选择第一个选项卡,然后将气象站实体拖放到该视图上;然后选择第二个选项卡并将观察实体拖到第二个选项卡上。

然后我自己创建了第三个标签,并在顶部添加了一个弹出窗口。该弹出框被绑定到StationArrayController,所以它会填充所有我添加的气象站。这很好。

然后我添加了一个表格视图来显示与选定站点相关的观测值。这也很好。我用一种方法实现了这一点,该方法创建一个谓词,用于搜索站点与所选站点匹配的所有观察值,并将谓词附加到与第三个选项卡上的表视图关联的ObservationArrayController。 (我不知道如何在IB中做到这一点,所以我以编程方式做到了这一点)。

的错误是这样的:如果我加载有气象站,并在它的观测以前保存的文件,当我去到第三个标签,即使站之一是选择(即,它出现在弹出),所有的观察结果都出现在tableview中,而不仅仅是那个台的相关联。

发生这种情况是因为我没有调用方法将谓词附加到观测阵列控制器,直到我实际使用弹出窗口手动更改电台。

所以我的问题是这个问题(对不起,花了这么长的时间才得到这一点!):我怎样才能检测何时加载标签视图,所以我可以强制连接谓词运行的方法,与选定的电台相匹配的观测的初始列表?

我试图创建自定义视图类和子类它用于第三选项卡视图,并把这个代码在awakeFromNib方法,但是这是在这个过程中过早(以下简称“选择的站”是-1在这一点上加载过程)。

任何帮助将不胜感激。谢谢!!

伊丽莎白

+0

上面的修复程序对于选择选项卡可以正常工作。唯一不适用的情况是如果该选项卡是应用程序第一次加载时的视图(如果我保存并退出应用程序时处于该选项卡中,则会发生这种情况)。在这种情况下,它会显示所有观测值,而不仅仅是所选电台的观测值。我需要一些其他代码来确定选项卡视图是否是第一次加载窗口时显示的视图。 – Elisabeth 2009-11-20 23:18:19

回答

1

啊,我刚才已经回答我的问题!

我将tabview的委托设置为MyDocument,并实现了tabView:didSelectTabViewItem:there。我在MyDocument中创建了一个IBOutlet,指向第三个选项卡视图,并在此方法中检查是否选择了第三个选项卡,如果是,则调用将谓词附加到ObservationArrayController的方法。很棒!

+0

在数组控制器获得所有内容之前,声音就像是谓词,因此在查询谓词时它没有任何内容。 – catsby 2009-11-20 23:10:28

+0

@ctshryock - 在我的情况下,谓词尚未附加到ObservationArrayController,因为只有当我从弹出菜单中选择了某些东西时才会发生这种情况。因此,如果我所做的只是选择该选项卡,那么该代码不会被调用。 – Elisabeth 2009-11-20 23:17:37