2017-07-04 9 views
0

私は最終的にプログラムで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つの要素を次のようになります。

enter image description here

ここでは、データ配列(背の高いテーブル)で16個の要素を次のようになります。

enter image description here

+0

SKSceneにUIオブジェクトを追加することはお勧めできません。 spritekit 100%を使用して独自のテーブル/スクロールビューをカスタマイズする方が良いでしょう。私は後でパフォーマンスの問題に直面すると思います。 – GeneCode

+0

基本的にNSTableViewをサブクラス化すべきだと言っていますか?私はテーブルをサブクラス化しないほうが良いという別の記事を読んでいました。 – 02fentym

+0

申し訳ありません@GeneCode、私はばかです。私はあなたが書いたことを10回連続して間違えた。私はあなたが今言っていることを知っています。自分のテーブルクラスを作成します。これはおそらく堅牢ではなく、時間がかかりますが、パフォーマンスの向上には価値があります。ありがとう:) – 02fentym

答えて

1

[self.view addSubview:_tableView];テーブルビューをスクロールビュー/クリップビューからに移動します。 0。

[self.view addSubview:scrollView];は、テーブルビューのスクロールビューをself.viewに追加します。

+0

私はちょうど '[self.view addSubview:_tableView];を' [self.view addSubview:scrollView];に切り替えましたが、今は何も表示されません:( – 02fentym

+0

私はそれを修正しました... ' NSScrollView' iniWithFrameの代わりにinit: ありがとうございました。 – 02fentym

関連する問題