Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 如何在NSView类(Cocoa)中引用NSTableView?_Macos_Cocoa - Fatal编程技术网

Macos 如何在NSView类(Cocoa)中引用NSTableView?

Macos 如何在NSView类(Cocoa)中引用NSTableView?,macos,cocoa,Macos,Cocoa,我正在尝试实现一个mac应用程序,基本上我在NSView中有一个NSTableView。 我在NSView上实现了多文件拖放功能,现在我想用刚才删除的文件名更新NSTableView 因此,我需要在NSView中引用NSTableView,并尝试重新加载数据以重新加载tableview 我曾尝试在NSView中初始化tableview控制器,但它似乎不起作用 MyTableController *testController = [[MyTableController alloc] init];

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

因此,我需要在NSView中引用NSTableView,并尝试重新加载数据以重新加载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];
MyTableController*testController=[[MyTableController alloc]init];
testController.nsMutaryOfDataObject=[[NSMutableArray alloc]init];
int i;
对于(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];
}//结束
[testController.idTableView setHeaderView:nil];
[testController.idTableView重载数据];
Xib文件如下:
有人能帮我吗

tableview有两个不同的方面:视图(数据表示;拖放)和数据源(与数组控制器组合的数组)。 通常情况下,tableview独立于它所在的视图,独自生活。因此,首先关注数据源方面,其次关注拖放方面

  • “TableView重新加载”只是指再次加载分配的数组
  • 对于阵列中的数据结构,强烈建议使用模型
  • 模型中不同部分的名称将绑定到表中的列
  • 数组是tableview的数据源
  • 使用阵列控制器
  • 您的文件名必须在数组中,按照模型的方式组织
  • 由于tableview始终是NSScrollView的一部分(子视图),请确保您的用户确实选择了tableview本身
  • 文档中提供了使用TableView的相当好的示例,包括绑定和不绑定,以及处理URL的“TableViewLinks”


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

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

    然后,您可以使用从NSView类发送到TV类的通知,并附加文件名数据。在tv类中接收后,可以使用文件名/将文件名添加到阵列中。我曾经创造了这样一个解决方案,它工作得非常完美


    它还确保了类的封装。

    tableview可以自己作为拖动目标。它将是响应程序,而不是围绕其ScrollView的简单包含视图。我有一个tableview控制器类和数据类,并设置了委托和数据源。然后我有另一个NSView类,它连接到NSTableview嵌入的NSView。最初,拖放方法是在这个NSView类中实现的,这就是为什么我想找到一种引用NSTableview的方法