2009-11-20 20 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

相關問題