gpt4 book ai didi

cocoa - 将值从自定义 NSView 传递到 NSCollectionViewItem

转载 作者:行者123 更新时间:2023-12-03 17:07:02 24 4
gpt4 key购买 nike

我的自定义 NSView 中有一个 NSTabView,用作 NSCollectionView 的原型(prototype)。在第二个选项卡中,我有 NSButton 按钮和 NSImageView 对象。

NSButton 是一个触发 NSOpenPanel 的“浏览”按钮。

我已将按钮的选择器连接到 MyCustomView 中的 IBAction,它执行以下操作:

// MyView.h

@interface MyView : NSView
{
IBOutlet NSTabView *tabView;
IBOutlet NSImageView *myImageView;
IBOutlet NSButton *browseButton;
}

-(IBAction)openBrowseDialog:(id)sender;


@end


// MyView.m

-(IBAction)openBrowseDialog:(id)sender
{

NSOpenPanel* openDlg = [NSOpenPanel openPanel];

[openDlg setCanChooseFiles:YES];
[openDlg setCanChooseDirectories:NO];
[openDlg setAllowsMultipleSelection:NO];
[openDlg setAllowedFileTypes:[NSArray arrayWithObjects:@"png", @"jpg", @"jpeg", @"gif", nil]];


if ( [openDlg runModal] == NSOKButton )
{

NSArray* files = [openDlg URLs];
NSURL* fileURL = [files objectAtIndex:0];
NSData *imageData = [NSData dataWithContentsOfURL:fileURL];

if( imageData != nil )
{
NSImage *image = [[NSImage alloc] initWithData:imageData];
myImageView.image = image;
[image release];
}

}

}

当我运行此“myImageView”时,即使我在 Interface Builder 中将其连接为 IBOutlet,也会在控制台中跟踪“null”。你能解释一下为什么吗?我应该怎么做呢?我还需要将“fileURL”值传递给 NSCollectionViewItem 对象中的“representedObject”,但我不知道如何从这里访问它?

最佳答案

经过一天的故障排除,我终于实现了我所需要的目标。我原来的方法有几个问题:

1) 在 NSCollectionView 中使用 NSTabView 似乎是一个坏主意,因为绑定(bind)不会在“非事件”选项卡中初始化。我放弃了这一点,并选择了 NSSegmentedControl,而不是手动显示/隐藏对象。

2)我原来问题中的所有代码都应该真正进入 NSCollectionViewItem 的子类中,而不是进入 NSView 的子类中,我什至不需要它,因为我不进行自定义绘图。

现在一切都好了。我正在学习。

关于cocoa - 将值从自定义 NSView 传递到 NSCollectionViewItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4888445/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com