如何在NSTableView中的选定行中获取元素?

Aam*_*mir 8 cocoa objective-c nstextfield nstableview

我有一个包含两列NSTableView的内容类型View Based.

我的对象结构如下:

Table View
    Table Column
        Table Cell View
            Text Field
    Table Column
        Table Cell View
            Popup Button
Run Code Online (Sandbox Code Playgroud)

对于选定的行,我想在特定列的选定行中获取一个元素.具体来说,我想获得Text Field所选行的第一列.

我有一个表视图的出口,到目前为止我有所选行的索引,但这是关于它:

- (void)getSelectedTextField
{
    NSInteger selected = [tableView selectedRow];
}
Run Code Online (Sandbox Code Playgroud)

关于如何处理这个问题的任何想法?

编辑:这就是我想要做的:我想将文本字段更改为处于编辑状态并关注它,以便用户可以在选择后立即开始编辑文本字段值

Aam*_*mir 18

我似乎已经解决了我自己的问题:

- (void)getSelectedTextField
{
    NSInteger selected = [tableView selectedRow];

    // Get row at specified index
    NSTableCellView *selectedRow = [tableView viewAtColumn:0 row:selected makeIfNecessary:YES];

    // Get row's text field
    NSTextField *selectedRowTextField = [selectedRow textField];

    // Focus on text field to make it auto-editable
    [[self window] makeFirstResponder:selectedRowTextField];

    // Set the keyboard carat to the beginning of the text field
    [[selectedRowTextField currentEditor] setSelectedRange:NSMakeRange(0, 0)];
}
Run Code Online (Sandbox Code Playgroud)


小智 5

使用可以通过获取其子视图来获取表视图单元格的所有元素。使用前建议显示日志列表子视图

NSInteger index = [self.tableViewFiles selectedRow];

// Get row at specified index of column 0 ( We just have 1 column)
NSTableCellView *cellView = [self.tableViewFiles viewAtColumn:0 row:index makeIfNecessary:YES];

// Get row's checkBox ( at index 0, textFields is 1,2)
NSButton *checkBox = [[cellView subviews] objectAtIndex:0];
Run Code Online (Sandbox Code Playgroud)