setContentOffset仅在animated设置为YES时有效。

5

我有一个UITableView,我希望它向下显示100像素。但不知为何只有在将动画设置为YES时才有效。这是为什么?

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    /*[self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:1 inSection:0] 
                          atScrollPosition:UITableViewScrollPositionNone 
                                  animated:NO];*/

    /*[self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathWithIndex:1] 
                                        atScrollPosition:UITableViewScrollPositionNone 
                                        animated:NO];*/

    [self.tableView setContentOffset:CGPointMake(0,100) animated:YES];
}
3个回答

0

如果您尝试使用setFrame而不是setContentOffset会怎样呢?

您应该在viewDidAppear方法中添加以下代码:


[self.tableView setFrame:CGRectMake(0, 100, 320, 380)];

根据您视图中的其他元素(例如导航控制器、工具栏等),您将不得不将380调整为其他值。


有没有办法使高度动态化? - Titouan de Bailleul

0
使用XCode提供的基本导航应用程序,并添加一些表格单元,它可以很好地处理你所给出的内容。你尝试过在viewDidAppear中设置内容偏移量而不是viewWillAppear吗?

这个视图是如何呈现的?它加载时是否直接显示?它是否以动画形式展示?此外,这是另一个视图中的视图吗?等等。 - David Liu
它正在进行动画处理。这不是另一个视图中的视图。 - Sheehan Alam

-1
将“setContentOffset”移动到“viewDidLoad”中,并在其之前添加“reloadData”:
在Swift中:
func viewDidLoad() {
    super.viewDidLoad()
    tableView.reloadData() // important for scrolling to be possible
    tableView.setContentOffset(newContentOffset), animated: false)
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接