2016-12-03 63 views
-2

我有一個NSTableView使用視圖控制器作爲NSTableViewDataSource。有時表和它的數據加載得很好,但有時它只是空白,並且數據源方法不會被調用。爲什麼這種隨機行爲,以及如何解決這個問題?NSTableView隨機加載空

+0

你什麼時候在你的tableview上調用reloadData?也許提前,數據源尚未填滿? – Volker

+0

Woah,哇,什麼是downvotes?我只是問/回答我自己的問題,希望有人面臨類似的錯誤(這絕對是一個錯誤,不應該這樣工作)可以修復它的應用程序相對較小的挫折。 – ThatsJustCheesy

+0

@Volker:謝謝你,你真是太棒了。實際上我根本不會調用'-reloadData',因爲直到這一點,所有其他表視圖都會自動加載,無需手動干預。然而,這種情況是不同的。我更新了答案。 – ThatsJustCheesy

回答

-2

顯然,我錯過了NSTableView的文檔文件的極其重要段:

重要

這有可能是用於填充表視圖的數據源方法可能之前被調用如果在Interface Builder中指定了數據源,將調用awakeFromNib。您應該通過讓數據源的numberOfRowsInTableView:方法在尚未配置數據源時的行數返回0來抵禦此。在awakeFromNib中,當數據源被初始化時,你應該總是在表視圖上調用reloadData。

現在,我不-awakeFromNib初始化(我這樣做是在-viewDidLoad),但是這仍然說,你應該隨時撥打-reloadData對你的數據源表視圖。

這可能很容易讓這個錯誤;通常情況下,表格視圖會自動加載其數據,不需要任何額外的reload調用。然而,它似乎確實在一些罕見的情況下,這可能不會發生。

因此,防止這個問題:隨時撥打-reloadData對你進行初始化後 -in -viewDidLoad-awakeFromNib,或其他一些適當的方法的數據源表視圖。