setContentOffset仅在动画设置为YES时有效

时间:2010-05-26 23:01:23

标签: iphone objective-c cocoa-touch uitableview

我有一个UITableView,我希望显示100px。出于某种原因,这仅在动画设置为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];
}

4 个答案:

答案 0 :(得分:0)

使用XCode提供的基于导航的基本应用程序并为其提供一些表格单元格,它可以与您提供的内容一起使用。您是否尝试在viewDidAppear中设置内容偏移量而不是viewWillAppear?

答案 1 :(得分:0)

如果您尝试使用setFrame而不是setContentOffset怎么办?

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


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

根据视图中的其他元素(例如导航控制器,工具栏等),您必须将380调整为其他内容。

答案 2 :(得分:0)

看到你提出了类似的问题,但史前有点不同, here.

我在那里回答。可能对某人有用。

答案 3 :(得分:-1)

移动" setContentOffset" to" viewDidLoad"并添加" reloadData"在那之前:

在斯威夫特:

func viewDidLoad() {
    super.viewDidLoad()
    tableView.reloadData() // important for scrolling to be possible
    tableView.setContentOffset(newContentOffset), animated: false)
    }