Frage

Ich versuche, ein Bild für ein NSImageView-Instanzobjekt in einem Cocoa-Projekt festzulegen.Mein Code sieht so aus:

itemTableCellView * xx = [tableView makeViewWithIdentifier:@"MainCell" owner:self];
    xx.label.stringValue = [tempCi simpleTxt];
    xx.img = [[NSImageView alloc]initWithFrame:CGRectMake(48, 48, 48, 48)]];
    NSImage * localimage = [NSImage imageNamed:@"menubar icon"];
    [xx.img setImage:localImage];
    return  xx;

Die Variable imgist vom Typ NSImageView.Die Variable localImage lädt das richtige Bild, ich habe es im Protokoll überprüft.Die Variable lable wird korrekt initialisiert und erhält den richtigen Wert

Ich bekomme immer wieder leere NSImageViews in meiner App.

War es hilfreich?

Lösung

Dein NSImageView wird ohne Größe initialisiert (der Frame entspricht NSZeroRect), außerdem fügen Sie die Bildansicht keiner Unteransicht hinzu.

Andere Tipps

wenn Sie Ihre erstellen NSimageViewVersuchen Sie es mit einem initwithframe:.Dadurch wird eine Größe für NSImageView festgelegt.Ich glaube, dass Sie sonst möglicherweise ein Rechteck der Größe Null zeichnen würden.

Du solltest benutzen

xx.img = [[NSImageView alloc] initWithFrame:CGRectMake(x, y, width, height)];

Oder vielleicht als img Ist Eigentum, müssen Sie es überhaupt nicht initiieren?Und einfach verwenden

xx.img.frame=CGRectMake(x, y, width, height);

Nun, noch eine weitere Eigenart von Objective-C!

Ich habe herausgefunden, dass selbst als a NSImageView ist eine Eigenschaft von an NSView, es muss hinzugefügt werden durch:

[xx addSubview:xx.img];   

Naja, Cocoa gespielt, sehr gut gespielt!
Prost!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top