2015-03-04 4 views
0

У меня проблема с NSCollectionView. В соответствии с этим руководством (https://www.youtube.com/watch?v=dw-sHMTsMVs), который мне кажется очень простым.NSCollectionView не работает

Я создал NSCollectionView, NSArrayController, с которым я связываю NSMuttableArray * todoList и задает класс Todo. Я присоединился к ViewController с IBAOutlet NSArrayController. Все кажется ОК, но когда я вызываю [arrayController addobject: todo], он генерирует исключение. видеть. картинки.

ViewController.h:

#import <Cocoa/Cocoa.h> 

@interface ViewController : NSViewController{ 
    IBOutlet NSArrayController *todoArrayController; 
} 
@property NSMutableArray *todoList; 
@property IBOutlet NSImageView *logo; 

@end 

ViewController.m:

#import "ViewController.h" 
#import "Db.h" 
#import "TodoManager.h" 

@interface NSURL (NSObject) 
+(id)URLWithLocalDatabase:(NSString*)database username:(NSString*)username params:(NSDictionary*)params; 
+(id)URLWithHost:(NSString*)host ssl:(BOOL)ssl username:(NSString*)username database:(NSString*)database params:(NSDictionary*)params; 
+(id)URLWithHost:(NSString*)host port:(NSUInteger)port ssl:(BOOL)ssl username:(NSString*)username database:(NSString*)database params:(NSDictionary*)params; 
@end 

@implementation ViewController 
@synthesize logo; 
@synthesize todoList = _todoList; 
const int WINDOW_WIDTH = 300; 
TodoManager* todoManager; 

- (void)awakeFromNib{ 
    Todo *todo = [[Todo alloc]init]; 
    todo.name = @"Shit"; 
    _todoList = [[NSMutableArray alloc]init]; 
    [todoArrayController addObject:todo]; 

} 

- (void)viewDidLoad { 
    todoManager = [[TodoManager alloc] init]; 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 
} 

- (void)setRepresentedObject:(id)representedObject { 
    [super setRepresentedObject:representedObject]; 
    // Update the view, if already loaded. 
} 

- (void)notifikace:(id)sender{ 
    NSUserNotification *notification = [NSUserNotification alloc]; 
    notification.title = @"Kurva to je dobry"; 
    notification.informativeText = @"TOTO je kurvesky dobrej text"; 
    notification.soundName = NSUserNotificationDefaultSoundName; 
    [[NSUserNotificationCenter defaultUserNotificationCenter] deliverNotification:notification]; 
} 

- (void)viewDidAppear{ 
    //Nastaveni rozmeru a pozici okna 
    NSRect rozmery = NSMakeRect([[NSScreen mainScreen] frame].size.width - WINDOW_WIDTH, 0, WINDOW_WIDTH, [[NSScreen mainScreen] frame].size.height); 
    [self.view.window setFrame:rozmery display:true]; 


    //Nastaveni pozadi okna 
    [self.view.window setBackgroundColor:[NSColor whiteColor]]; 
    //Vždy top 
    [self.view.window setLevel:NSFloatingWindowLevel]; 

    //Nastaveni loga 
    NSImage *image = [[NSImage alloc] initWithContentsOfFile:@"/Users/jasin/Documents/XcodeProjects/TestProjekt/TestProjekt/logo.png"]; 
    [self.logo setImage: image]; 

} 
@end 

Компоновка & соединения: http://www.jumina.cz/shot1.png

+0

Экран исключения: http://www.jumina.cz/shot2.png – JaSHin

ответ

0

Пожалуйста, не использовать изображения для получения информации, как журнал исключений, который прежде всего текст.

В любом случае исключение: «Прототип элемента NSCollectionView не должен быть равен нулю». Таким образом, вы пренебрегли подключением вывода itemPrototype вашего вида коллекции к экземпляру NSCollectionViewItem в NIB. Когда вы перетаскиваете представление коллекции в NIB, IB создает прототип элемента коллекции и подключает к нему розетку, поэтому, возможно, вы удалили элемент и/или отключили розетку самостоятельно. Если это так, вы не должны этого делать.

+0

Как подключить пунктПрототип-выход к NSCollectionViewItem? Когда я пытаюсь перетащить и перетащить, это происходит не потому, что у NSCollectionViewItem есть собственный вид. shot1.png. – JaSHin

+0

О, право, раскадровки. По-видимому, в Xcode/IB есть ошибки в отношении просмотров коллекции и раскадровки. Например, см. Https://stackoverflow.com/questions/26542955/cocoa-where-is-the-link-between-a-nscollectionview-and-a-nscollectionviewitem –

+0

Я попытался получить экземпляр CollectionViewItem над NSCollectionViewItem * collectionViewItem = [self.storyboard instantiateControllerWithIdentifier: @ "collection_item"]; и collectionViewItem всегда равен нулю. Я попытался установить «collection_item» как идентификатор или идентификатор StoryBoard для восстановления NSCollectionViewItem или Identity для NSView в NSCollectionViewItem и всегда collectionViewItem nil :(Что не так? – JaSHin

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

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