2009-01-29 12 views

回答

2

你需要以某種方式獲得對NSArrayController的引用。如果您自己正在加載NIB,則可以將IBOutlet實例添加到設置爲NIB「文件所有者」的類中。當你加載一個筆尖時,你提供NIB的「文件所有者」類的實例作爲所有者。如果您沒有自己加載NIB(即它由Cocoa自動加載爲應用程序的MaineMenu nib/xib),那麼在nib中創建自己的類的實例,併爲該實例添加一個IBOutlet。你在你的類中創建一個IBOutlet像這樣:

@interface MyClass : NSObject { //of course your class doesn't have to be a direct descendent of NSObject 
    IBOutlet NSArrayController *arrayController; 
} 

@property (retain,nonatomic,readwrite) IBOutlet NSArrayController *arrayController; 

... 

@end 

@implementation 
@synthesize arrayController; 

- (void)dealloc { 
    [arrayController release]; 
    [super dealloc]; 
} 
@end 

在類連接IBOutlet中的NSArrayController的(在第一種情況下的文件所有者或您在第二種情況下類的實例上述控制研究點擊)並拖動到NSArrayController。當您釋放鼠標時,您會在拖放源中彈出IBOutlets。選擇您創建的IBOutlet(例如上例中的「arrayController」)。

一個筆尖被加載(即awakeFromNib在你的類名爲後),您可以通過出口進入arrayController:

NSArray *content = [[self arrayController] arrangedObjects]; 

,你現在可以做你的數組中的值討好什麼。

+0

如果你不自己加載筆尖,那麼說你不需要@property和@synthesize是否正確? – catsby 2009-05-28 20:03:57

1

如果我有這個正確的,你有一個TableView綁定到綁定到你的數據的NSArrayController。

簡單的方法:在您的類(通常是文件的所有者)中創建一個IBOutlet,並在Interface Builder中將此IBOutlet連接到NSArrayController。然後你可以從這個數組中獲得你需要的值。