Pregunta

Tengo un NSTABVIEW dentro de mi NSVIEW personalizada que se utiliza como prototipo para NSCollectionView. En la segunda pestaña tengo el botón NSBUTTON y los objetos NSIMAVEVIEW.

NSBUTTON es un botón de "navegar" que desencadena el nsopenpanel.

He conectado el selector del botón a Ibaction en MyCustomView que realiza lo siguiente:

// MyView.h

@interface MyView : NSView 
{
    IBOutlet NSTabView *tabView;
    IBOutlet NSImageView *myImageView;
    IBOutlet NSButton *browseButton;
}

-(IBAction)openBrowseDialog:(id)sender;


@end


// MyView.m

-(IBAction)openBrowseDialog:(id)sender
{

    NSOpenPanel* openDlg = [NSOpenPanel openPanel];

    [openDlg setCanChooseFiles:YES];
    [openDlg setCanChooseDirectories:NO];
    [openDlg setAllowsMultipleSelection:NO];
    [openDlg setAllowedFileTypes:[NSArray arrayWithObjects:@"png", @"jpg", @"jpeg", @"gif", nil]];


    if ( [openDlg runModal] == NSOKButton )
    {

        NSArray* files = [openDlg URLs];
        NSURL* fileURL = [files objectAtIndex:0];
        NSData *imageData = [NSData dataWithContentsOfURL:fileURL];

        if( imageData != nil )
        {
            NSImage *image = [[NSImage alloc] initWithData:imageData];
            myImageView.image = image;
            [image release];
        }

    }

}

Cuando ejecuto este "myImageView" traza "nulo" en la consola a pesar de que lo conecté como iBoutlet en Interface Builder. ¿Podrías explicar por qué? ¿Cómo debo hacer esto en su lugar? También necesito pasar el valor "FileUrl" a "RepresentedObject" en mi objeto NSCollectionViewItem, pero no sé cómo acceder a eso desde aquí.

¿Fue útil?

Solución

Finalmente he logrado lo que necesitaba después de un día de problemas. Hubo un par de cosas mal con mi enfoque original:

1) El uso de NSTABVIEW dentro de NSCollectionView parece ser una mala idea porque los enlaces no se inicializan en las pestañas "no activas". Lo deseché y opté por NSSegmentedControl en su lugar con Manual Show/Ocultar de objetos.

2) Todo el código en mi pregunta original realmente debería ir dentro de la subclase de NSCollectionViewitem en lugar de en la subclase de NSView, que ni siquiera necesito ya que no estoy haciendo dibujo personalizado.

Ahora todo está bien. Estoy aprendiendo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top