使用Xcode 4.6.1,iOS SDK 6.1,创建一个新的Master-Detail iOS应用程序(使用ARC,没有故事板),在DetailViewController中,我将configureView设置为:
- (void)configureView
{
UITableView *lTableView = [[UITableView alloc] initWithFrame: self.view.frame];
lTableView.scrollsToTop = YES; // just to emphasise, it is the default anyway
lTableView.dataSource = self;
[self.view addSubview: lTableView];
}
然后我通过返回100个虚拟UITableViewCells确保UITableView中有足够的数据,似乎状态栏上的点击不会将表格视图滚动到顶部。
我在这里遗漏的显而易见的事情是什么?
答案 0 :(得分:1)
如果同一窗口中的任何其他UIScrollView
实例或子类实例也将scrollsToTop
设置为YES
,则滚动到视图顶部将无效,因为iOS不知道如何选择滚动哪一个。在您的情况下,configureView
实际上被调用了两次:
viewDidLoad
setDetailItem:
由于您在UITableView
中添加了configureView
作为子视图,因此您最终会得到两个表格视图,其中scrollsToTop
设置为YES
。要解决此问题,请在viewDidLoad
中创建表格视图,并仅使用configureView
修改给定详细信息项所需的基本状态。
- (void)viewDidLoad {
[super viewDidLoad];
UITableView *lTableView = [[UITableView alloc] initWithFrame: self.view.frame];
lTableView.scrollsToTop = YES;
lTableView.dataSource = self;
[self.view addSubview: lTableView];
[self configureView];
}