2

現在,我一直在閱讀關於NSArrayController的一切。
我有正確設置我的廈門國際銀行,NSArrayController的,NSTableView的和綁定 - 除了我NSTableView的一個奇怪的行爲一切的工作。NSTableView:以編程方式添加一行導致選擇具有相同值的許多行?

首先是一些代碼,以圖片的情景:

@implementation MyAppDelegate 

@synthesize arrayController, dataArray; 

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { 
    self.dataArray = [NSMutableArray array]; 
} 

- (IBAction)myControllerAddAction:(id)sender { 
    NSString *val = [[NSDate date] description]; 
    NSMutableDictionary *item = [NSMutableDictionary dictionaryWithObjectsAndKeys:val, @"date", nil]; 
    [serversController addObject:item]; 
} 

- (IBAction)myArrayAddAction:(id)sender { 
    NSString *val = [[NSDate date] description]; 
    NSMutableDictionary *item = [NSMutableDictionary dictionaryWithObjectsAndKeys:val, @"date", nil]; 
    [[self mutableArrayValueForKey:@"dataArray"] addObject:item]; 
} 

@end 

使用-mutableArrayValueForKey:@"myNSArrayControllerStore",並通過返回NSMutableArray代理的-addObject:myDictionary陣列控制器添加對象指示表視圖中繪製新的內容,但它會選擇所有的行與同他們NSCell小號

enter image description here

利用陣列控制器的-addObject:myDictionary它會得出新行,並選擇新添加的一個:

enter image description here

(每秒兩個屏幕上,我一直在不斷地點擊多次)

這是爲什麼?
使用[NSMutableArray -addObject:]時,我是否需要自己處理正確的行選擇?
或者這是一個錯誤?

的Mac OS 10.7.3
的Xcode 4.3
基地SDK 10.7
部署目標10.6

+0

我不明白這些截圖。在第一個屏幕截圖中,選擇全部:17行,與添加的第一項匹配。第二,只有一個具有給定值的項目。我在第一種情況下采用它,每次點擊都會擴展原始選擇,直到時間更改爲下一秒,而在第二種情況下,每次點擊後選擇會移動? – paulmelnikow 2012-03-19 01:36:16

+0

@noa是的,這是正確的...任何線索? – glasz 2012-03-20 22:45:27

回答

0

使用陣列控制器的-addObject:方法是處理插入的正確方式。它確保控制器將正確的消息發送給與之綁定的對象。

這聽起來像陣列控制器的方法是否正常工作。

這將是能夠陣列控制器綁定到可變陣列有用,併爲他們正確地監測到插入綁定的數組,但我不認爲他們的設計以這種方式工作。

+0

是的。我知道。但根據[這](http://stackoverflow.com/questions/5236060/how-does-updating-nstableview-from-this-mutable-array-work-in-cocoa)和[其他資源](http:///forums.macrumors.com/showthread.php?t=914414)我讀過另一種方法,因爲它符合kvo標準,所以也應該可以工作。我真的很想知道爲什麼會出現這種視覺上的奇怪... – glasz 2012-03-22 11:39:56

+0

感謝您發佈這些鏈接 - 幫助我理解您的嘗試。你的方法*是*工作,因爲項目顯示。它的行爲是不正確的'chooseInsertedObjects'。當您插入的項目是獨一無二的(例如,相距超過一秒)時,您會得到什麼結果? – paulmelnikow 2012-03-22 15:30:25

相關問題