![](/img/trans.png)
[英]iOS5 content view controller blocks scroll view on custom container view controller
[英]how to make a custom scroll container view controller?
我的应用程序中有两个视图控制器,例如vc1和vc2。 这两个视图控制器作为scrollView的子视图,因此用户可以滚动屏幕以切换视图。 但是,简单的实现有一个问题:vc1和vc2的viewWillAppear方法仅被调用一次。 所以我想实现我的滚动容器视图控制器,它可以正确调用viewWillAppear方法,请告诉我如何实现它。
我不确定您要做什么,但是我认为简单的UITableView或UICollectionView可能对您更好,因为它们具有数据源方法,当视图在屏幕上显示时,它们会自动调用。 当需要返回UITableViewCell或UICollectionViewCell时,可以更新两个视图。
我不确定这是否行得通,但我想您可以在scrollView
的委托方法中检查scrollView
的框架是否与屏幕的边界scrollView
。
我很确定每次滚动scrollView时都会调用一个方法。 使用这种方法,您可以检查
//put this in your .h or something
BOOL vc1IsVisible = true;
//in the scrollView delegate-method that is called upon scrolling
if([self isInsideView:vc1])
{
if(!vc1IsVisible)
{
vc1IsVisible = true;
[vc1 viewDidAppear:NO]; //or whatever it is for animation
}
}
else
{
if(vc1IsVisible)
vc1IsVisible = false
//and viewDidDisappear?
}
然后在这样的地方创建一个方法
-(BOOL)isInsideView:(UIViewController*)vc
{
//Check if vc.origin.y is greater than scrollView.size.height or something maybe?
//You can probably also try using the scrollView's contentOffset and use that
//relative to the viewController's sizes.
//if the viewControllers bounds are withing the scrolls bounds, return YES;
//else, return NO;
}
抱歉,我现在无法真正测试任何内容。 如果您还没有弄清楚,也许我会做点什么,然后再更新答案。 而且您需要同时使用两者。 我敢肯定,您可以找到一种更好的方法,既可以在此方法中同时包含一个变量,也可以包含一个变量。
由于您使用ViewController
通过将其添加滚动视图的子视图,通过添加ViewController
这样viewDidLoad
, viewWillAppear
, viewDidAppear
会被调用一次,我的意思是有没有用viewWillAppear中的位置正因为如此,而如果你想以更新添加任何东西ViewController
您应该在ViewController
创建一个公共类,并在需要更新时调用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.