How to display a view from a NSViewController?
我是 Objective-c 的新手,所以请多多包涵。我有一个从网络摄像头返回图片的类,我正在尝试将其显示到屏幕上。我将
在 PhotoGrabberController.h
中
1 2 3 4 5 | @interface PhotoGrabberController : NSViewController { PhotoGrabber * grabber; NSImageView* iView; } @property (nonatomic, retain) NSImageView* iView; |
在 PhotoGrabberController.m
中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | @implementation PhotoGrabberController @synthesize iView,grabber; - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { } return self; } - (void) awakeFromNib { self = [super init]; if (self) { NSRect rect = NSMakeRect(10, 10, 200, 100); iView = [[NSImageView alloc] initWithFrame:rect]; [iView setImageScaling:NSScaleToFit]; [iView setImage:[NSImage imageNamed:@"picture.png"]]; grabber = [[PhotoGrabber alloc] init]; grabber.delegate = (id)self; //[grabber grabPhoto]; (This usually sets iView but I removed it and manually set iView to be an image from file above for simplicity) [self setView:iView]; } } |
我曾尝试在 AppDelegate 的
问题
How do I get the main window to show the image?
这是视图的工作。
既然你已经有了一个视图,你只需要把它放到窗口中。一个窗口只直接持有一个视图,称为它的内容视图;最有可能的是,您希望将视图控制器的视图添加为已经是内容视图的视图的子视图,或者作为其他孙子视图的子视图。
Is it ok to use PhotoGrabberController.view instead of creating a view subclass?
这些是正交的。 VC 的视图是视图类的一个实例。创建类与使用实例无关。
我认为创建视图子类不会对您有所帮助。你已经有两个工作视图:一个普通的 NSView 作为 VC 的直接视图,一个 NSImageView 在里面。不需要子类将这些添加到视图中,其中图像视图位于窗口中。
What is wrong with my understanding of how things work here?
您已经错过了视图层次结构的整个概念,以及这样一个层次结构是每个窗口显示其内容的方式这一事实。
另外,您的问题以€?我是 Objective-ca 的新手? (原文如此),但您的问题是关于 Cocoa 框架(特别是 AppKit 框架),而不是 Objective-C 语言。
Can you direct me to a resource where I can fully understand how this works?
窗口编程指南(特别是?Windows 如何工作?)和视图编程指南(特别是,使用视图层次结构?)。