2011-02-03 8 views
1

У меня есть NSTabView внутри моего пользовательского NSView, который используется в качестве прототипа для NSCollectionView. Во второй вкладке у меня есть кнопка NSButton и объекты NSImageView.Передача значений из пользовательского NSView в NSCollectionViewItem

NSButton - кнопка «Обзор», которая запускает NSOpenPanel.

Я подключил селектор кнопки на IBAction в MyCustomView, который выполняет следующие действия:

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

    } 

} 

Когда я запускаю этот «myImageView» следы «нуль» в консоли, даже если я подключил его как IBOutlet в Interface Builder , Не могли бы вы объяснить, почему? Как мне это сделать? Мне также нужно передать значение «fileURL» в «presentObject» в моем объекте NSCollectionViewItem, но я не знаю, как получить доступ к этому отсюда?

ответ

2

Я, наконец, добился того, что мне нужно после целого дня борьбы. В моем первоначальном подходе было несколько ошибок:

1) Использование NSTabView внутри NSCollectionView кажется плохой идеей, потому что привязки не инициализируются на вкладках «неактивные». Я отказался от этого и выбрал NSSegmentedControl вместо этого с помощью ручного show/hide объектов.

2) Весь код в моем исходном вопросе должен действительно входить в подкласс NSCollectionViewItem, а не в подкласс NSView, который мне даже не нужен, так как я не делаю пользовательский чертеж.

Теперь все хорошо. Я изучаю.

 Смежные вопросы

  • Нет связанных вопросов^_^