Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 将NSTableView添加到SpriteKit应用程序_Objective C_Macos_Nstableview - Fatal编程技术网

Objective c 将NSTableView添加到SpriteKit应用程序

Objective c 将NSTableView添加到SpriteKit应用程序,objective-c,macos,nstableview,Objective C,Macos,Nstableview,我最终以编程方式创建了一个NSTableView。我添加了一个NSScrollView,但由于某些原因,它没有显示滚动。如果我向表中添加越来越多的对象,它的高度会增加,并且我希望它保持相同的高度。如何做到这一点?下面是我拼凑的代码 #import "GameScene.h" @interface GameScene() @property NSMutableArray *data; @end @implementation GameScene - (void)didMoveToVie

我最终以编程方式创建了一个
NSTableView
。我添加了一个
NSScrollView
,但由于某些原因,它没有显示滚动。如果我向表中添加越来越多的对象,它的高度会增加,并且我希望它保持相同的高度。如何做到这一点?下面是我拼凑的代码

#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个元素的情况(更高的表):


[self.view addSubview:\u tableView]
将表格视图从scrollview/clipview移动到
self.view


[self.view addSubview:scrollView]
将带有表格视图的滚动视图添加到
self.view

将UI对象添加到场景中不是一个好主意。最好使用spritekit 100%定制您自己的表/滚动视图。我想稍后您将面临性能问题。所以基本上您是说我应该将NSTableView子类化?我在另一篇文章中读到,最好不要对表进行子类化。对不起@GeneCode,我是个白痴。我连续十次误读了你写的东西。我知道你现在在说什么。我将创建自己的表类。它可能不会那么强大,需要更长的时间,但性能的提升是值得的。谢谢:)是的。但如果您想节省时间,也可以搜索第三方spritekit表。我没有搜索过它,但我相信可能有人做了一个。这就是我现在正在寻找的。我刚刚意识到要让滚动正常工作可能很困难,而且需要一些时间。我四处看看。我刚刚切换了
[self.view addSubview:\u tableView]
[self.view addSubview:scrollView]现在我什么也看不到:(我修复了它…我忘了用init而不是iniWithFrame初始化
NSScrollView
:谢谢你的帮助。