2

私はobjective-cが初めてなので、ご容赦ください。ウェブカメラから画像を返すクラスがあり、それを画面に表示しようとしています。サブクラス化NSViewControllerして、カメラクラスから画像を取得し、それをインスタンスNSImageViewに設定し、NSViewControllerのビューをに設定しましたNSImageView。Interface Builderでカスタムビューを作成し、NSViewControllerオブジェクトをMainMenu.xibにドラッグして、そのクラスをPhotoGrabberControllerに設定し、カスタムビューからPhotoGrabberControllerにクリックドラッグを制御して、アウトレットバインディングをビューに設定しました。(私はそれが舞台裏でどのように機能するかを本当に知りません、それは私には魔法のようです)。画面には何も表示されず、私はこれをずっと遊んでいます。

PhotoGrabberController.hで

@interface PhotoGrabberController : NSViewController {
    PhotoGrabber * grabber;
    NSImageView* iView;
}
@property (nonatomic, retain) NSImageView* iView;

PhotoGrabberController.mで

@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にさまざまなものを入れていじくり回しましapplicationDidFinishLaunchingたが、現在の設定方法では、そこに何も入れる必要はないと思います。

質問

  1. メインウィンドウに画像を表示するにはどうすればよいですか?
  2. ビューサブクラスを作成する代わりにPhotoGrabberController.viewを使用しても大丈夫ですか?
  3. ここで物事がどのように機能するかについての私の理解の何が問題になっていますか?私はこれを理解しようと多くの時間を費やしましたが、どこにも行き着きませんでした。
  4. これがどのように機能するかを完全に理解できるリソースに私を導くことができますか?Appleのドキュメントが詳細すぎて分厚いことがわかりました。ウィンドウ、ビュー、およびビューコントローラがどのようにロードされて相互作用するかを理解したいだけです。
4

1 に答える 1

6
于 2012-03-25T20:51:16.853 に答える