Domanda

Ho un NStabView all'interno del mio NSView personalizzato che viene utilizzato come prototipo per NSCollectionView. Nella seconda scheda ho il pulsante NSButton e gli oggetti NSIMAGEVIEW.

NSButton è un pulsante "Sfoglia" che innesca NsopenPanel.

Ho collegato il selettore del pulsante all'iBAction in MyCustomView che esegue quanto segue:

// 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];
        }

    }

}

Quando eseguo questo "myimageview" traccia "null" nella console anche se l'ho collegato come iboutlet in Interface Builder. Potresti spiegare perché? Come dovrei farlo invece? Devo anche passare il valore "fileurl" a "rappresentato -object" nel mio oggetto NscollectionViewItem ma non so come accedervi da qui?

È stato utile?

Soluzione

Ho finalmente raggiunto ciò di cui avevo bisogno dopo una giornata di difficoltà. C'erano un paio di cose sbagliate nel mio approccio originale:

1) L'uso di NSTABVIEW all'interno di NSCollectionView sembra essere una cattiva idea perché i legami non vengono inizializzati in schede "non attive". L'ho demolito e ho optato per NSSegmentControl invece con la mostra/nascondiglio manuale di oggetti.

2) Tutto il codice nella mia domanda originale dovrebbe davvero andare all'interno della sottoclasse di NscollectionViewItem piuttosto che nella sottoclasse di NSVIEW, che non ho nemmeno bisogno dal momento che non sto facendo un disegno personalizzato.

Adesso va tutto bene. Sto imparando.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top