Question

J'ai un NSTabView dans mon NSView personnalisé qui est utilisé comme prototype pour le NSCollectionView.Dans le deuxième onglet, j'ai le bouton NSButton et les objets NSImageView.

NSButton est un bouton "Parcourir" qui déclenche le NSOpenPanel.

J'ai connecté le sélecteur du bouton à IBAction dans MyCustomView qui effectue les opérations suivantes:

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

    }

}

Lorsque j'exécute ce "myImageView" trace "null" dans la console même si je l'ai connecté en tant qu'IBOutlet dans Interface Builder.Pouvez-vous expliquer pourquoi?Comment dois-je faire cela à la place?J'ai également besoin de passer la valeur "fileURL" à "IncludedObject" dans mon objet NSCollectionViewItem mais je ne sais pas comment y accéder à partir d'ici?

Était-ce utile?

La solution

J'ai enfin réalisé ce dont j'avais besoin après une journée de dépannage.Il y avait quelques problèmes avec mon approche initiale:

1) L'utilisation de NSTabView dans NSCollectionView semble être une mauvaise idée car les liaisons ne sont pas initialisées dans les onglets "non actifs".Je l'ai mis au rebut et j'ai opté pour NSSegmentedControl à la place avec affichage / masquage manuel des objets.

2) Tout le code de ma question initiale devrait vraiment entrer dans la sous-classe de NSCollectionViewItem plutôt que dans la sous-classe de NSView, dont je n'ai même pas besoin puisque je ne fais pas de dessin personnalisé.

Maintenant, tout va bien.J'apprends.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top