1

使用 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 中有足够的数据,似乎点击状态栏不会将表格视图滚动到顶部。

我在这里缺少什么明显的东西?

4

1 回答 1

1

UIScrollView如果同一窗口中的任何其他实例或子类实例也scrollsToTop设置为,则滚动到视图顶部将不起作用,YES因为 iOS 不知道如何选择应该滚动哪个。在您的情况下,configureView实际上被调用了两次:

  • viewDidLoad加载详细控制器时
  • setDetailItem:主控制器推送到细节控制器时

因为您要在 中添加 aUITableView作为子视图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];
}
于 2013-04-12T14:26:31.347 回答