Frage

ich mit AppKit und NSDocument spielte, und ich weiß nicht, warum das nicht funktioniert:

Ich schrieb diese und das Bild ist nicht null, sondern lädt nie irgendein Bild, seine Größe immer gleich Null ist. Ist das die richtige Methode, ich habe zu implementieren Dateien in mein Dokument zu lesen? Ich brauche den Pfad, nicht die Daten (NSData), weil ich plane, andere Bibliothek zu verwenden, um andere Dateien zu lesen.

Jetzt versuche ich PNGs zu lesen, JPGs, keine gearbeitet. ; (

- (BOOL) readFromURL:(NSURL *)url ofType:(NSString *)typeName error:(NSError **)outError{

    NSImage *image = nil;
    image = [[NSImage alloc] initWithContentsOfURL:url];

    [imageView setImage:image];
    [image release];

    if ( outError != NULL ) {
        *outError = [NSError errorWithDomain:NSOSStatusErrorDomain code:unimpErr userInfo:NULL];
    }
    return YES;
}

Vielen Dank im Voraus.

War es hilfreich?

Lösung

Wenn Imageview aus einer NIB-Datei geladen wird, wird es nicht gesetzt gewesen sein, als readfromurl: ofType: Fehler: genannt wird. Stattdessen sollten Sie das Bild laden und speichern sie in einer Instanzvariablen, fügen Sie es dann auf die Imageview in der windowControllerDidLoadNib: Methode. Auch Sie werden jedes Mal, dass ein Fehler zurückgegeben, während Sie sollten nur einen Fehler zurück, wenn etwas schief geht.

- (void)windowControllerDidLoadNib:(NSWindowController *)windowController {
    [imageView setImage:image];
    [image release];
    image = nil;
}
- (BOOL)readFromURL:(NSURL *)url ofType:(NSString *)typeName error:(NSError **)outError {
    image = [[NSImage alloc] initWithContentsOfURL:url];
    if(!image) {
        if(outError) *outError = [NSError errorWithDomain:NSOSStatusErrorDomain code:unimpErr userInfo:NULL];
        return NO;
    }
    return YES;
}

So stellen Sie sicher, dass Sie ein NSImage * Bild hinzufügen; Instanzvariable auf Ihre Header-Datei.

Andere Tipps

Sie es so aus:

NSImage *image = [[NSImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:url]]];
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top