我目前正在開發熟悉obj-c,我想填充TableView。花了幾個小時閱讀太多的博客文章後,我無法理解如何在我的TableView中添加一行。在OSX應用程序中按下按鈕時填充NSMutableArray中的NSTableView
這是我做了以下this guide:
我在ViewController
的NSMutableArray
,這ViewController
實現這兩個接口NSTableViewDataSource
和NSTableViewDelegate
。我按照指南中的說明執行這兩種方法。我也有一個按鈕和一個tableView。當我點擊按鈕時,我用自己的對象填充陣列,這很好。
但我現在想要的是,當我的數組被填充,我的tableview也是。我知道我需要以某種方式綁定這兩個,但我不知道如何,有人可以給一些指示?
這是我爲我的ViewController
代碼:
- (void)viewDidLoad {
[super viewDidLoad];
self.tableViewEpisodes.delegate = self;
self.tableViewEpisodes.dataSource = self;
}
- (IBAction)btRefresh:(id)sender {
CalendarReader* reader = [[CalendarReader alloc]init];
self.episodes = [Episode getEpisodeFromEKEvents:[reader getLastMonthEventsForCalendarName:@"TV Shows"]];
[self.tableViewEpisodes reloadData];
}
- (NSInteger)numberOfSectionsInTableView:(NSTableView *)tableView
{
return [self.episodes count];
}
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColum row:(NSInteger)row {
// Retrieve to get the @"MyView" from the pool or,
// if no version is available in the pool, load the Interface Builder version
NSTableCellView *result = [tableView makeViewWithIdentifier:@"MyView" owner:self];
// Set the stringValue of the cell's text field to the nameArray value at row
result.textField.stringValue = [self.episodes objectAtIndex:row];
// Return the result
return result;
}
您好布萊恩,我正在開發一個應用程序的OSX,而不是iOS,所以它不是'UITableView',而是'NSTableView'(如果我是正確的,我可能在這裏犯了一個大錯誤:))但通過測試這段代碼,我注意到一條日誌消息,告訴corrct實現兩個方法,現在,我得到的錯誤是因爲我沒有在我的自定義類中實現NSCopying。 – 2015-04-01 22:08:46
您有三種NSTableViewDataSource協議所需的方法。請參閱[this](https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Protocols/NSTableDataSource_Protocol/index.html#//apple_ref/occ/intf/NSTableViewDataSource) – 2015-04-01 22:35:39
但第三個只有當用戶可以編輯TableView中的數據時,這不是我的情況。 – 2015-04-01 22:42:18