2009-11-13 157 views
1

我有一系列UITableViewCell元素和各種UIControls來設置模型值。更改模型時更新UI

當我對模型進行更改時,我很難找到更新顯示模型中計算屬性的UITableViewCell的方法。

我已經將模型放在AppDelegate中,並直接從RootViewController訪問它。在每個UITableViewCell實現中,我都有一個方法在進行更改時更新模型。

但是,我不知道如何刷新顯示以顯示更新。 (我嘗試將相同的元素連接到兩個動作,但是,動作完成的順序並不一致,所以它首先重新加載顯示,然後更新模型)。

任何幫助將不勝感激。

謝謝..

回答

1

我試過連接相同的元件到 兩個動作。但是,在這 動作完成的順序並不 一致的,所以它首先重新加載 顯示,然後更新模型

嘗試使用只有一個動作,首先更新模型,當做到這一點,更新顯示。在我看來你的問題是同步這兩個,所以我建議你在模型更新函數之後調用display-updating函數。

+0

Thanks Luvieere, UITableViewCell具有setModel函數,並且應該在RootViewController中調用更新函數。我是否在UITableViewCellController對象中創建RootViewController變量,然後調用updateDisplay方法? 這是正確的方法嗎? – Prasanna

+0

要麼是這樣,要麼讓您的RootViewController更新函數爲靜態,所以您可以像[RootViewController update]一樣調用它。 – luvieere

+0

@Prasanna,你如何爲每個'UITableViewCell'(TVC)創建一個'UITableViewCellController'(TVCC)? – ma11hew28

0

如果您使用的是NSFetchedResultsManager,這是很容易實現委託回調到您的UITableViewController。具體做法是:

- (void)controllerWillChangeContent:(NSFetchedResultsController *)controller; 
- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath; 
- (void)controller:(NSFetchedResultsController *)controller didChangeSection:(id <NSFetchedResultsSectionInfo>)sectionInfo atIndex:(NSUInteger)sectionIndex forChangeType:(NSFetchedResultsChangeType)type; 
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller; 

您可以在Core Data Books例如,用於實現一看RootViewController

通過這種方式,您不需要完全重新加載數據,只需修改已更改的部分即可。