2011-06-27 86 views
2

我是Objective-C的新手,我很喜歡它。但是,我似乎在圈內跑步。我正在努力盡可能地在沒有編寫代碼的情況下做到這一點。是否有可能將一個NSArrayController的內容集有效地綁定到另外兩個NSArrayControllers的選擇上。如何將NSArrayController的內容集綁定到多個NSArrayController選擇?

例如,我希望所選的用戶(NSArrayController)具有選定的賣方(NSArrayController)的所有交易(NSArrayController)。然後,當我添加新的交易時,它鏈接到選定的用戶和賣家。

什麼是最好的方式來做到這一點,以便當我點擊綁定到用戶控制器的NSTableView中的新用戶時,綁定到交易控制器的NSTableView中的交易會相應地發生變化,但仍保留與所選賣家相關的交易在綁定到賣方控制器的NSTableView中(反之亦然)?

我可能只是需要改變我的觀點,因爲我習慣於生活在一個沒有約束力的世界。

感謝任何幫助。

回答

1

你可能會在IB一個「TransactionsForUserAndSeller」 NSArrayController的,其contentSet勢必userArrayController.selection.transactions定期配置,然後過濾使用其filterPredicate勢必sellerArrayController.selection與返回NSPredicate值轉換的結果。

該值轉換」的實現可能是這樣的:

+(Class)transformedValueClass { return [NSPredicate class]; } 

+(BOOL)allowsReverseTransformation { return NO; } 

-(id)transformedValue:(id)value { 

    if (value == nil) return nil; 

    return [NSPredicate predicateWithFormat: 
      [NSString stringWithFormat:@"seller == %@", value]]; 
} 

這將顯示正確的子集,但你需要手動編寫自己的插件的方法來處理人際關係,通過出口來獲取當前選擇賣方陣列控制器。

+0

多數民衆贊成在智能解決方案 –

相關問題