Kri*_*oot 9 iphone uiviewcontroller ios
使用SDK 6.1,Xcode 4.6.1,我制作了一个新项目Master-Detail iOS App,ARC,没有故事板.
然后在DetailViewController
,在viewDidLoad
我添加UITableView
s中包含的两个s,UIViewController
并确保第二个隐藏如下:
- (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;
}
Run Code Online (Sandbox Code Playgroud)
(我确保这DetailViewController
是一个数据源,返回100行UITableViewCell
s,textLabel.text
设置为@"hello"
)
第二个视图控制器的存在使得scrollsToTop
(点击状态栏)不再起作用.如果我不使用UIViewController
包含并只添加两个UITableView
并将第二个设置为隐藏,scrollsToTop
则确实有效.
我究竟做错了什么?
scrollsToTop
仅适用于单个可见视图.从文档:
此手势适用于单个可见滚动视图; 如果有多个滚动视图(例如,日期选择器)与该属性集,或者如果委托返回
NO
中scrollViewShouldScrollToTop:
,UIScrollView
忽略该请求.滚动视图滚动到内容视图的顶部后,它会向委托发送一条scrollViewDidScrollToTop:
消息.
您可以尝试[tableView setContentOffset:CGPointZero animated:YES]
手动调用每个表(或滚动)视图.为此,请scrollViewShouldScrollToTop:
在UIScrollViewDelegate
协议中实现该方法:
- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView {
[lTableView1 setContentOffset:CGPointZero animated:YES];
[lTableView2 setContentOffset:CGPointZero animated:YES];
return NO;
}
Run Code Online (Sandbox Code Playgroud)
我目前正在试验你的项目。什么时候
lViewController2.view.hidden = YES;
Run Code Online (Sandbox Code Playgroud)
被替换为
lTableView2.hidden = YES;
Run Code Online (Sandbox Code Playgroud)
然后滚动就可以工作,即使有控制器遏制。
我尝试在控制器视图和表格之间插入一个视图,然后隐藏该视图,但表格没有滚动。
我尝试通过试验隐藏控制器,shouldAutomaticallyForwardAppearanceMethods
但表格没有滚动。
结果:根据我的实验,视图层次结构中必须只有一个滚动视图可见,并且hidden
不会检查父视图的属性。hidden
必须在所有其他滚动视图上设置为NO
,而不是在其父视图上。
归档时间: |
|
查看次数: |
4087 次 |
最近记录: |