TableView是在IB中創建的,希望它只有一列帶有複選框。創建對應的複選框的一種方法是拖動NSButtonCell成使用IB柱,然後符合NSTableViewDataSource協議實現:在創建NSButtonCell(s)的列中使用NSButtonCell的tableview中?
- (void)tableView:(NSTableView *)aTableView setObjectValue:(id)anObject forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
- (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView
因此,當一個類對象是在TableView中充當數據源到一個列中,並且該列包含對象,如每行的複選框,是僅爲複選框提供開/關狀態數據的類,還是提供複選框對象?
相關的問題是:
- 是對TableView中創建和含NSButtonCells?
- 如果答案是1,那麼如何設置/更改NSButtonCell的屬性,如其標題?
- 而不是TableView創建和維護NSButtonCells,數據源類可以創建它們嗎?也就是說,不用IB來將NSButtonCell拖到列中,可以在諸如awakeFromNIB之類的方法中添加NSButtonCells嗎?
- 是否有混合給定列中單元格對象類型的方法?例如,是否可以在column1row1中有文本標題,然後在column1row2中有複選框?
謝謝。
我完全理解模型,視圖,控制器。我認爲我沒有收到我的問題(來自你或任何人)的詳細答案的原因是,TableView上的細節可能不再廣爲人知。在我找到一個我認爲給出詳細信息的書之前,我必須看看很多Cocoa書籍。Cocoa編程 作者:Scott Anguish,Erik M. Buck,Donald A. Yacktman(發佈日期2002)有一個關於TableView的部分,它提供了詳細信息我所評論的新的可可書籍似乎都沒有。 – bhartsb
我已經知道如何設置複選框的狀態。我不知道的是問題#2:如何設置/更改NSButtonCell的屬性,如其標題?通過設置標題,我的意思是每個單元格的複選框(在單個列表中)都有自己的標題,而不是所有標題都是相同的。同樣地,如何讓某些單元格的單列中的行包含複選框,而其他單元格包含textfieldCell(就像複選框的分組標題的區段標題一樣)。 – bhartsb
本書規定,默認情況下,表中的條目是NSTextFieldCell對象,每列有一個單元對象,該列由該列的所有行共享。因此,爲了設置複選框的標題,可以:a)NSTableColumn的子類,b)覆蓋方法 - (id)dataCellForRow:(int)行,並在此重寫方法的主體中獲取列的共享單元對象這種情況下,一個NSButtonCell複選框從超類拖到IB中的colummn)並設置一個唯一標題。 – bhartsb