Это продолжение по предыдущему вопросу. Извините. Я не мог понять, как добавить код или редактировать что-то написанное более 5 минут назад.NSTableView не отображается
Краткое резюме. Я пытаюсь отобразить персонализированный/производный TableView над обычным представлением. Я не использую IB, но все делаю из кода. Целью здесь является создание приложения, а также изучение программирования Cocoa/OSX. Это моя первая попытка кодирования OSX.
NSView, поверх которого я хотел бы отображать мой пользовательский TableView, отображается хорошо. Извините мусор NSLog. Это помогает мне узнать о жизненном цикле приложения. Заголовок:
#import <Cocoa/Cocoa.h>
#import "MSNavigationTableView.h"
@interface MSNavigationPanelView : NSView
@property (strong, nonatomic) IBOutlet MSNavigationTableView *myNavigationTable;
@end
код:
#import "MSNavigationPanelView.h"
@implementation MSNavigationPanelView
- (id)initWithFrame:(NSRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code here.
NSLog(@"Initializing Navigation Panel");
}
self.myNavigationTable = [[MSNavigationTableView alloc] initWithFrame:self.frame];
[self.myNavigationTable setDataSource:self.myNavigationTable];
[self.myNavigationTable setDelegate:self.myNavigationTable];
[self addSubview:self.myNavigationTable];
return self;
}
- (void)drawRect:(NSRect)dirtyRect
{
[super drawRect:dirtyRect];
// Drawing code here.
NSLog(@"Drawing navigation view!");
}
@end
Теперь NSTableView производный класс. Заголовок:
#import <Cocoa/Cocoa.h>
@interface MSNavigationTableView : NSTableView <NSTableViewDataSource>
@end
NSArray *myNavigationArray;
Источник:
#import "MSNavigationTableView.h"
@implementation MSNavigationTableView
+ (void)initialize {
NSLog(@"Called NavigationTableView::initialize!");
myNavigationArray = [NSArray arrayWithObjects:@"Call History" @"Contacts", @"Messages", @"Voicemail", nil];
}
- (id)initWithFrame:(NSRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code here.
}
return self;
}
- (void)drawRect:(NSRect)dirtyRect
{
[super drawRect:dirtyRect];
// Drawing code here.
}
- (NSInteger)numberOfRowsInTableView: (NSTableView *) aTableView
{
return [myNavigationArray count];
}
- (id)tableView: (NSTableView*) aTableView objectValueForTableColumn: (NSTableColumn *)aTableColum row: (NSInteger)rowIndex
{
NSLog([myNavigationArray objectAtIndex:rowIndex]);
return [myNavigationArray objectAtIndex:rowIndex];
}
@end
Спасибо. Я уверен, что я делаю что-то глупое и/или, возможно, не делаю что-то необходимое. Я попытался понять это на пару часов. Пока нет идей.
В чем проблема? Вид таблицы не отображается? Попытка переместить инициализацию табличного представления из метода инициализации MSNavigationPanelView и переместить его в метод awakeFromNib' (void) MSNavigationPanelView – Will
Это не сработало. Я предполагаю, что у меня что-то не хватает. –
Вы найдете свой предыдущий вопрос, спуститесь в пространство чуть выше своего имени и под списком тегов (в нескольких дюймах отсюда) и нажмите «редактировать». –