gpt4 book ai didi

iphone - scrollsToTop 不适用于 UIViewController 包含

转载 作者:技术小花猫 更新时间:2023-10-29 11:16:21 25 4
gpt4 key购买 nike

使用 SDK 6.1、Xcode 4.6.1,我创建了一个新项目 Master-Detail iOS App,ARC,没有 Storyboard。

然后在 DetailViewController 中,在 viewDidLoad 中,我添加了两个包含在 UIViewController 中的 UITableView 并使确定第二个是这样隐藏的:

- (void)viewDidLoad
{
[super viewDidLoad];

UIViewController *lViewController1 = [[UIViewController alloc] init];
UITableView *lTableView1 = [[UITableView alloc] initWithFrame: self.view.frame];
lTableView1.scrollsToTop = YES;
[lViewController1.view addSubview: lTableView1];
lTableView1.dataSource = self;
[self.view addSubview: lViewController1.view];
[self addChildViewController: lViewController1];

UIViewController *lViewController2 = [[UIViewController alloc] init];
UITableView *lTableView2 = [[UITableView alloc] initWithFrame: self.view.frame];
lTableView2.scrollsToTop = YES;
[lViewController2.view addSubview: lTableView2];
lTableView2.dataSource = self;
[self.view addSubview: lViewController2.view];
[self addChildViewController: lViewController2];

// now hide the view in view controller 2
lViewController2.view.hidden = YES;
}

(我确保 DetailViewController 是一个返回 100 行 UITableViewCell 的数据源,其中 textLabel.text 设置为 @"你好")

第二个 View Controller 的存在使得 scrollsToTop(点击状态栏)不再起作用。如果我不使用 UIViewController 包含,只是添加两个 UITableView 并将第二个设置为隐藏,scrollsToTop 确实有效。

我做错了什么?

最佳答案

scrollsToTop 仅适用于单个可见 View 。来自documentation :

This gesture works on a single visible scroll view; if there are multiple scroll views (for example, a date picker) with this property set, or if the delegate returns NO in scrollViewShouldScrollToTop:, UIScrollView ignores the request. After the scroll view scrolls to the top of the content view, it sends the delegate a scrollViewDidScrollToTop: message.

您可以尝试在每个表格(或滚动) View 上手动调用 [tableView setContentOffset:CGPointZero animated:YES]。为此,请在 UIScrollViewDelegate 协议(protocol)中实现 scrollViewShouldScrollToTop: 方法:

- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView {
[lTableView1 setContentOffset:CGPointZero animated:YES];
[lTableView2 setContentOffset:CGPointZero animated:YES];
return NO;
}

关于iphone - scrollsToTop 不适用于 UIViewController 包含,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15974893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com