【问题标题】:how to reference NSTableView inside NSView Class (Cocoa)?如何在 NSView 类(可可)中引用 NSTableView?
【发布时间】:2014-03-23 07:37:19
【问题描述】:

我正在尝试实现一个 mac 应用程序,基本上我在 NSView 中有一个 NSTableView。 我在 NSView 上实现了多个文件的拖放功能,现在我想用刚刚删除的文件名更新 NSTableView。

所以我需要在我的 NSView 中引用 NSTableView 并尝试 reloadData 来重新加载 tableview。

我已经尝试在 NSView 中初始化 tableview 控制器,但它似乎不起作用?

MyTableController *testController = [[MyTableController alloc] init];

    testController.nsMutaryOfDataObject = [[NSMutableArray alloc]init];
    int i;
    for (i = 0; i < 20; i ++) {
        NSString * zStr1 = [[NSString alloc]initWithFormat:@"%d",(i + 1) * 10];
        NSString * zStr2 = [[NSString alloc]initWithFormat:@"%d",((i + 1) * 100) + 2];
        NSString * zStr3 = [[NSString alloc]initWithFormat:@"%d",((i + 1) * 1000) + 3];
        MyDataObject * zDataObject = [[MyDataObject alloc]initWithString1:zStr1
                                                               andString2:zStr2
                                                               andString3:zStr3];
        [testController.nsMutaryOfDataObject addObject:zDataObject];
    } // end for

    [testController.idTableView setHeaderView:nil];
    [testController.idTableView reloadData];

Xib 文件如下: 任何人都可以帮助我吗?

【问题讨论】:

  • tableview 可以单独作为一个拖动目的地。它将是响应者,而不是其 ScrollView 周围的简单包含视图。

标签: macos cocoa


【解决方案1】:

tableview 有两个不同的方面:视图(数据的呈现;拖放)和数据源(与数组控制器结合的数组)。 通常,tableview 独立于它所在的视图而独立于它自己的生活。因此,首先将注意力集中在数据源方面,然后将注意力集中在拖放方面。

  1. "TableView reload" 只是意味着重新加载分配的数组。
  2. 对于数组中的数据结构,强烈建议使用模型。
  3. 模型中不同部分的名称绑定到表中的列。
  4. 数组是表视图的数据源。
  5. 使用阵列控制器。
  6. 您的文件名必须在数组中,按照模型的方式组织...
  7. 因为 tableview 始终是 NSScrollView 的一部分(子视图),请确保您确实选择了 tableview 本身。

在文档中有相当不错的使用 tableviews 的示例,有和没有绑定,还有“TableViewLinks”处理 URL...

您的代码缺少表格视图工作的基本方法,因此请从头开始使用示例。

【讨论】:

  • 我有一个表视图控制器类和数据类,其中包含委托和数据源集。然后我有另一个 NSView 类,它连接到 NSTableview 嵌入的 NSView。最初拖放方法是在这个 NSView 类中实现的,这就是为什么我想找到一种方法来引用 NSTableview
【解决方案2】:

听起来好像电视工作正常 和 您在 NSView 类中有可用的文件名 和 不想在电视类中也实现拖放功能。

然后您可以使用从 NSView 类发送到 TV 类的通知,并附上 fileNames-data。在电视类中接收后,文件名可以被使用/添加到数组中。我曾经创建过这样的解决方案,它非常有效。

它还确保了类的封装。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多