我有一个带UIPageViewController的示例项目。在我的第一页(pageviewcontroller:class name- step1Controller)中有一个" Continue按钮。当我点击该按钮时,我需要滚动第一页并显示第二页(而不是在此处滑动,点击按钮将改变页面)。
所以在按钮上单击我调用的方法进行自动滚动,并且非常幸运地显示我的uiscrollview框架为零。我该如何解决这个问题?请帮忙
我附上了项目副本(一个小文件200kb)
我的代码结构就像
ViewController (click on "add" button open second viewcontroller)-->MainController (here i have uiscrollview and uipageviewcontroller connected to 6 pages).
When i click "Continue" green button from first page it should auto scroll and sho the second page.
请帮忙。
Code on first page of pageview
- (IBAction)continueButton:(id)sender {
Controller=[[MainController alloc]init];
//calling viewcontroller method were we created scrollview
[Controller moveToNextPage:1];
}
in MainController
-(void)moveToNextPage:(int )page{
NSLog(@"%@",str);
self.pageControl.currentPage=2;
NSLog(@"frame: (%0f %0f; %0f %0f)",
self.scrollViewDrug.frame.origin.x, self.scrollViewDrug.frame.origin.y,
self.scrollViewDrug.frame.size.width, self.scrollViewDrug.frame.size.height);
CGRect newFrame=CGRectMake(320*page,self.scrollViewDrug.frame.origin.y,self.scrollViewDrug.frame.size.width, self.scrollViewDrug.frame.size.height);
[self.scrollViewDrug scrollRectToVisible:newFrame animated:YES];
}
代码链接
答案 0 :(得分:0)
您正在从 MainController 创建6个视图控制器,然后单击继续按钮,您将再次创建 MainController 的对象,认为该对象它将引用您创建这6个对象的相同对象。但事实并非如此,这个新的 MainController 是一个全新的对象,其组件仍未初始化。这就是你的滚动视图和任何其他变量在这里 nil 的原因 解决方案:在子控制器中使用协议,创建委托并回调 MainController 来执行该页面过渡。