gpt4 book ai didi

objective-c - 向 NSTableView 添加行不会更改其框架

转载 作者:行者123 更新时间:2023-12-03 17:12:51 25 4
gpt4 key购买 nike

我试图在 NSTableView 的末尾插入一个新行,滚动到它并开始编辑它。除了滚动之外,一切似乎都工作正常。表格 View 似乎滚动到最后一行之前的行(这是我刚刚添加的行)。

这是我使用的代码:

- (void)insertNewRowInMainTable
{
[self logScrollView];

NSUInteger lastRow = self.mainTableView.numberOfRows;
[self.mainTableView insertRowsAtIndexes:[NSIndexSet indexSetWithIndex:lastRow] withAnimation:NSTableViewAnimationEffectFade];
[self.mainTableView editColumn:0 row:lastRow withEvent:nil select:YES];

NSLog(@"Inserted Row");
NSLog(@"last row rect: %@",NSStringFromRect([self.mainTableView rectOfRow:lastRow]));
[self logScrollView];
}

- (void)tableViewSelectionDidChange:(NSNotification *)aNotification
{
NSInteger selectedRow = [self.mainTableView selectedRow];
[self.mainTableView scrollRowToVisible:selectedRow];
}

- (void)logScrollView
{
NSScrollView *scrollView = [self.mainTableView enclosingScrollView];
NSLog(@"Document visible rect: %@",NSStringFromRect([scrollView documentVisibleRect]));
NSLog(@"Table view frame: %@",NSStringFromRect([self.mainTableView frame]));

NSInteger selectedRow = [self.mainTableView selectedRow];
NSLog(@"Selected row rect: %@",NSStringFromRect([self.mainTableView rectOfRow:selectedRow]));
}

这是日志的输出:

2013-05-01 16:22:04.254 DEGS[96570:303] Document visible rect: {{0, 0}, {509, 506}}
2013-05-01 16:22:04.255 DEGS[96570:303] Table view frame: {{0, -204}, {509, 1732}}
2013-05-01 16:22:04.256 DEGS[96570:303] Selected row rect: {{0, 0}, {509, 209}}
2013-05-01 16:22:04.287 DEGS[96570:303] Inserted Row
2013-05-01 16:22:04.287 DEGS[96570:303] last row rect: {{0, 1732}, {509, 161}}
2013-05-01 16:22:04.288 DEGS[96570:303] Document visible rect: {{0, 1226}, {509, 506}}
2013-05-01 16:22:04.288 DEGS[96570:303] Table view frame: {{0, -204}, {509, 1732}}
2013-05-01 16:22:04.288 DEGS[96570:303] Selected row rect: {{0, 1732}, {509, 161}}

我可以从日志中看到插入新行不会改变 TableView ​​框架大小。因此,当我滚动到最后一行时, ScrollView 滚动到 contentView 的底部,但尺寸错误,仅显示倒数第二行。

我可以通过在插入行后手动移动 ScrollView 来解决此问题,但我想了解这是一个错误还是一个功能?

最佳答案

插入新行不会滚动 TableView 。这是给定的功能。

您需要向下滚动才能看到最后添加的行。

此方法可以为您做到这一点:

- (void)scrollRowToVisible:(NSInteger)row;

关于objective-c - 向 NSTableView 添加行不会更改其框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16313799/

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