scrollsToTop 不适用于简单的 Master-Detail iOS 应用程序

Posted

技术标签:

【中文标题】scrollsToTop 不适用于简单的 Master-Detail iOS 应用程序【英文标题】:scrollsToTop not working for simple Master-Detail iOS Application 【发布时间】:2013-04-12 14:09:08 【问题描述】:

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

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

【问题讨论】:

设置后试试-> lTableView.delegate = self; 嗨巴拉。试过了,没用。 你的 DetailView 中有多个 Scrollview 吗? 如果您的 DetailView 中有多个滚动视图,那么这可能会对您有所帮助 - > ***.com/a/8960080/1059705 Scroll to top of UITableView by tapping status bar的可能重复 【参考方案1】:

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

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

因为您要在configureView 中添加UITableView 作为子视图,所以最终会得到两个表视图,两者都将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];

【讨论】:

这里有一个后续问题:***.com/questions/15974893/… 这更接近我所追求的实际问题,但我也有点卡住了。非常感谢任何帮助。

以上是关于scrollsToTop 不适用于简单的 Master-Detail iOS 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式点击状态栏后如何触发“scrollsToTop”?

TTTableViewController scrollsToTop 不工作

scrollsToTop 和 UIRefreshControl 的错误

简单的计数器不适用于 React 上下文

简单的 SQL 命令不适用于特定参数

简单的 URL 路由不适用于 CodeIgniter