我正在尝试编写一个Xcode OS X应用程序,该应用程序允许双击图像井的图像以在图像中打开另一个更大的图像窗口。问题是我似乎无法将图像变量传输到新窗口。
我创建了一个名为cardImageView的NSImageView
子类,它绑定到主窗口的图像。这个类所做的就是处理鼠标注册事件并启动新窗口来保存图像:
- (void)mouseUp:(NSEvent *)theEvent
{
if ([theEvent clickCount] == 2) {
NSLog(@"double click in NS image cell");
if (!self.cardImageViewController) {
self.cardImageViewController = [[cardImageViewerWindowController alloc]init];
self.cardImageViewController.cardImage.objectValue = self.cardImageViewImage;
NSLog(@"ib account = %@",self.IBAccount);
self.cardImageViewController.ibAccount = self.IBAccount;
}
[self.cardImageViewController showWindow:nil];
}
}
cardImageViewImage和IBAccount
都在cardImageView类的公共API中,如下所示:
#import <Cocoa/Cocoa.h>
@interface cardImageView : NSImageView
@property (strong) NSImageCell *cardImageViewImage;
@property (strong) NSString *IBAccount;
@end
问题是,当这个类运行时,两个变量都包含null,即使它们是在我的主窗口控制器中设置的,如下所示:
if (!self.cardImageView) {
self.cardImageView = [[cardImageView alloc]init];
}
self.cardImageView.cardImageViewImage = self.whosAccount.cardImage;
self.cardImageView.IBAccount = self.whosAccount.ibAccount;
cardImageView在主窗口控制器的私有API中指定,如下所示:
@property (strong) IBOutlet cardImageView *cardImageView;
这些行是方法的一部分,只要图像在主窗口图像中发生变化就会被调用。我知道self.whosAccount.cardImage
和self.whosAccount.ibAccount
都包含数据,因为它们用于填充主窗口。
我不明白为什么当我在主窗口控制器中设置self.cardImageView.cardImageViewImage
和self.cardImageView.IBAccount
时,它们无法在cardImageView类中引用。
任何帮助都会受到赞赏,因为我显然做错了。