将NSArray发送到NSTableView

时间:2013-02-19 18:04:57

标签: objective-c macos cocoa nsarray nstableview

将存储在NSArray中的数据发送到NSTableView并逐行显示的最简单方法是什么?

例如: NSArray有数据[a,b,c]

我希望NSTableView说:

B'/ P>

C

NSTableView只需要1列。

2 个答案:

答案 0 :(得分:1)

您不会向NSTableView“发送”内容。 NSTableView会询问您的事情。它通过NSTableViewDataSource协议实现。所以你需要做的就是实现两个必需的方法(-numberOfRowsInTableView:和-tableView:objectValueForTableColumn:row :),并将tableview的数据源插座连接到你的对象。

NSTableViewDataSource的文档位于:https://developer.apple.com/DOCUMENTATION/Cocoa/Reference/ApplicationKit/Protocols/NSTableDataSource_Protocol/Reference/Reference.html

答案 1 :(得分:0)

您需要探索UITableViewDelegate和UiTableViewDataSource委托方法:

#pragma mark --- Table View Delegate Methods ----------------------------
//Handles the selection of a cell in a table view
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
}

//Defines the number of sections in a table view
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

//Defines the header of the section in the table view
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
    return nil; 
}

//Defines the number of rows in each section
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 1;
}

//Defines the content of the table view cells
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

    cell.textLabel.text = [myDataArray objectAtIndex:[indexPath row]];//<-pay attention to this line

    return cell;
}