私は最終的にプログラムでNSTableView
を作成しました。 NSScrollView
を追加しましたが、なんらかの理由でスクロールが表示されません。テーブルにオブジェクトを追加すると、高さが増し、同じ高さに維持されます。これはどうすればできますか?以下は私が一緒に石畳をしたコードです。NSTableViewをSpriteKitアプリケーションに追加
#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
は、ここでは、データ配列の8つの要素を次のようになります。
ここでは、データ配列(背の高いテーブル)で16個の要素を次のようになります。
SKSceneにUIオブジェクトを追加することはお勧めできません。 spritekit 100%を使用して独自のテーブル/スクロールビューをカスタマイズする方が良いでしょう。私は後でパフォーマンスの問題に直面すると思います。 – GeneCode
基本的にNSTableViewをサブクラス化すべきだと言っていますか?私はテーブルをサブクラス化しないほうが良いという別の記事を読んでいました。 – 02fentym
申し訳ありません@GeneCode、私はばかです。私はあなたが書いたことを10回連続して間違えた。私はあなたが今言っていることを知っています。自分のテーブルクラスを作成します。これはおそらく堅牢ではなく、時間がかかりますが、パフォーマンスの向上には価値があります。ありがとう:) – 02fentym