Ich erstellte schließlich eine NSTableView
programmgesteuert. Ich habe eine NSScrollView
hinzugefügt, aber aus irgendeinem Grund zeigt es nicht die Rolle. Wenn ich der Tabelle mehr und mehr Objekte hinzufüge, wird die Höhe größer und ich möchte, dass sie auf der gleichen Höhe bleibt. Wie kann das gemacht werden? Hier ist der Code unten, den ich zusammengeschustert habe.Hinzufügen NSTableView SpriteKit App
#import "GameScene.h"
@interface GameScene()
@property NSMutableArray *data;
@end
@implementation GameScene
- (void)didMoveToView:(SKView *)view {
_data = [NSMutableArray arrayWithObjects:@"1", @"2", @"3", @"4", @"5", @"6", @"7", @"8", nil];
NSRect rect = NSMakeRect(300, 200, 400, 100);
_tableView = [[NSTableView alloc] initWithFrame:rect];
[_tableView addTableColumn:[[NSTableColumn alloc] initWithIdentifier:@"column 1"]];
_tableView.dataSource = self;
_tableView.delegate = self;
NSScrollView *scrollView = [[NSScrollView alloc] init];
[scrollView setHasVerticalScroller:YES];
[scrollView setDocumentView:self.tableView];
[self.view addSubview:_tableView];
}
-(NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
return [_data count];
}
-(NSView*)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
NSTextView *textView = [[NSTextView alloc] init];
textView.string = [_data objectAtIndex:row];
return textView;
}
-(void)update:(CFTimeInterval)currentTime {
// Called before each frame is rendered
}
-(void)removeUIViews{
[_tableView removeFromSuperview];
}
@end
Hier ist, wie es mit 8 Elementen in der Datenanordnung aussieht:
Hier ist, wie es mit 16 Elementen in dem Datenfeld (größer Tabelle) aussieht:
Es ist keine gute Idee, Benutzeroberflächenobjekte zu SKScene hinzuzufügen. Es ist besser, Ihre eigene Tabelle/Scrollview mit Spritekit 100% anzupassen. Ich denke, dass Sie später auf Leistungsproblemen stoßen werden. – GeneCode
Also im Grunde sagen Sie, dass ich NSTableView Unterklasse sollte? Ich habe in einem anderen SO-Beitrag gelesen, dass es besser ist, keine Tabelle zu unterklassifizieren. – 02fentym
Sorry @GeneCode, ich bin ein Idiot. Ich habe gelesen, was Sie geschrieben haben, wie 10 Mal hintereinander. Ich weiß, was du jetzt sagst. Ich werde meine eigene Tabellenklasse erstellen. Es wird wahrscheinlich nicht so robust sein und wird länger dauern, aber die Performance-Gewinne werden es wert sein. Danke :) – 02fentym