在 NSTableView 中为每一行显示不同的值

发布于 2024-10-21 16:46:43 字数 138 浏览 0 评论 0原文

我正在尝试制作一个程序,该程序将有一个 NSTableView,我可以从中添加和删除值,并且对于每个值,它将存储一些不同的变量,当用户选择时,这些变量将显示在文本框中表中的一项。我已经编写了添加和删除值的代码,但似乎无法找到使其余功能正常工作的方法。我该怎么做?

I am trying to make a program that will have an NSTableView that I can add and remove values from, and for each value it will store a few different variables that will be displayed in text boxes when a user selects an item from the table. I've already wrote the code to add and remove values, but can't seem to find a way to get the rest of the functionality to work. How can I do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

随风而去 2024-10-28 16:46:43

我建议您将 tableview 数据源(对象数组)中的每个元素表示为 NSDictionary。这使您能够为每个表视图项保留多个变量,当单击某个项时,这些变量可以显示在文本框中。苹果有一个很好的例子来说明我认为你正在尝试做的事情。查看 NSTableViewBinding 示例。在示例中,当用户双击表视图中的项目时,将调用检查方法。您可以使用此方法在文本框中显示字典中的变量:

- (void)inspect:(NSArray *)selectedObjects

{

// this is an example of inspecting each selected object in the selection
int index;
int numItems = [selectedObjects count];
for (index = 0; index < numItems; index++)
{
    NSDictionary *objectDict = [selectedObjects objectAtIndex:index];
    if (objectDict != nil)
    {
        NSLog(@"inspect item: {%@ %@, %@}",
              [objectDict valueForKey:@"firstname"],
              [objectDict valueForKey:@"lastname"],
              [objectDict valueForKey:@"phone"]);
                    [myTextBox1 setStringValue:[objectDict valueForKey:@"firstname"]];
                    [myTextBox2 setStringValue:[objectDict valueForKey:@"lastname"]];
    }
}

}

I suggest that you you represent each element in your tableview datasource (your array of objects) as a NSDictionary. This enables you to keep several variables for each tableview item, which can be displayed in textboxes when an item is clicked. Apple has a very good example that illustrates what I think you are trying to do. Take a look at the NSTableViewBinding example. In the example, when the user double-clicks an item in the tableview an inspect method is called. You can use this method to display your variables from the dictionary in textboxes:

- (void)inspect:(NSArray *)selectedObjects

{

// this is an example of inspecting each selected object in the selection
int index;
int numItems = [selectedObjects count];
for (index = 0; index < numItems; index++)
{
    NSDictionary *objectDict = [selectedObjects objectAtIndex:index];
    if (objectDict != nil)
    {
        NSLog(@"inspect item: {%@ %@, %@}",
              [objectDict valueForKey:@"firstname"],
              [objectDict valueForKey:@"lastname"],
              [objectDict valueForKey:@"phone"]);
                    [myTextBox1 setStringValue:[objectDict valueForKey:@"firstname"]];
                    [myTextBox2 setStringValue:[objectDict valueForKey:@"lastname"]];
    }
}

}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文