2014-02-14 76 views
1

我想保留幾個NSPopUpButton與同一個模型對象同步。我剛剛熟悉綁定並實施了以下方案。多個NSArrayControllers可以控制同一個數組嗎?

Controllers

這是一個可怕的想法?

這裏每個NSPopUpButton都有自己的NSArrayController。每個NSArrayController從我的模型層中的相同的 NSMutableArray數據源中獲取它們的內容。

我注意到一些奇怪的問題,當添加和刪除對象到模型數組(上面的例子中的動物數組),並想知道這種方法是多麼可行或是否有更好的方法來保持多個視圖同步與相同的模型?

+0

返回的陣列代理。側面任務:挑選不適合其他動物的那個。對不起,無法抗拒。 –

+0

千萬不要牛人:) –

回答

1

只要您在主線程中保留對模型的更改,您應該可以很好地執行此操作。

每個NSArrayController都會偵聽來自NSMutableArray的KVO通知,並會相應地進行更新。

如果通過其中一個NSArrayController更改數組,它將更新您的NSMutableArray,它將再次觸發KVO通知,該通知將被其他兩個NSArrayControllers捕獲。

以符合KVO的方式更新您的NSMutableArray非常重要。也就是說你應該使用由mutableArrayValueForKey:

+0

我沒有用-mutableArrayValueForKey更新,我只是簡單地選擇一個數組控制器並添加/刪除對象。我會嘗試直接處理模型,看看是否有幫助。 –

相關問題