gpt4 book ai didi

objective-c - 如何以编程方式添加可滚动的 NSTableView

转载 作者:太空狗 更新时间:2023-10-30 03:46:30 24 4
gpt4 key购买 nike

我试图在代码中将 TableView 添加到 View 而不是使用 Interface Builder,不幸的是它导致了一些问题 =(

这是我现在如何做的一个例子。

NSScrollView *scrollView = [[NSScrollView alloc] initWithFrame:someRect];
NSTableView *tableView = [[NSTableView alloc] initWithFrame: scrollView.bounds];
resultsTableView.dataSource = self;

resultsScrollView.documentView = tableView;

[someView addSubview: scrollView];

所以基本上我只是将 tableView 放在 scrollView 中(因为那是 IB 正在做的)然后将后者添加为 someView 的 subview 。结果是出现了一个 tableView - 但 tableView 中没有显示任何数据。调试显示正在询问 dataSource tableView 中有多少行,但是方法:

tableView:objectValueForTableColumn:row:

永远不会被调用。我怀疑这是因为我创建 tableView 的方式。

我试过谷歌但没有运气,macdevcenter 上的“ TableView 编程指南简介”也没有帮助。我错过了什么?

提前致谢...

最佳答案

我创建了默认示例项目,然后执行了以下操作:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {    NSRect          scrollFrame = NSMakeRect( 10, 10, 300, 300 );    NSScrollView*   scrollView  = [[[NSScrollView alloc] initWithFrame:scrollFrame] autorelease];    [scrollView setBorderType:NSBezelBorder];    [scrollView setHasVerticalScroller:YES];    [scrollView setHasHorizontalScroller:YES];    [scrollView setAutohidesScrollers:NO];    NSRect          clipViewBounds  = [[scrollView contentView] bounds];    NSTableView*    tableView       = [[[NSTableView alloc] initWithFrame:clipViewBounds] autorelease];    NSTableColumn*  firstColumn     = [[[NSTableColumn alloc] initWithIdentifier:@"firstColumn"] autorelease];    [[firstColumn headerCell] setStringValue:@"First Column"];    [tableView  addTableColumn:firstColumn];    NSTableColumn*  secondColumn        = [[[NSTableColumn alloc] initWithIdentifier:@"secondColumn"] autorelease];    [[secondColumn headerCell] setStringValue:@"Second Column"];    [tableView  addTableColumn:secondColumn];    [tableView setDataSource:self];    [scrollView setDocumentView:tableView];    [[[self window] contentView] addSubview:scrollView];}- (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView{    return 100;}- (id) tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex{    NSString* cellValue = [NSString stringWithFormat:@"%@ %ld", [aTableColumn identifier], (long)rowIndex];    return cellValue;}

您可以获取示例应用 TableViewInCode

(哦,对于 objective-c 点语法,就说不。:-)

关于objective-c - 如何以编程方式添加可滚动的 NSTableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2432459/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com