我有一个带有UIPageViewController的示例项目。在我的第一页(pageviewcontroller:类名-step1Controller)中有一个"继续"按钮。当我点击该按钮时,我需要滚动第一页并显示第二页(而不是在这里滑动,点击按钮将更改页面)。
所以在点击按钮时,我调用了一个方法来进行自动滚动,但意外的是,它显示我的用户界面框架为零。??我该怎么解决这个问题??请帮助
我附上了项目的副本(它是一个小文件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];
}
代码链路
代码
您正在从MainController创建6个视图控制器,然后单击Continue按钮,您将再次创建MainController的对象,认为它将引用您创建这6个对象的同一对象。然而,事实并非如此,这个新的MainController是一个全新的对象,其组件仍未初始化。这就是为什么你的滚动视图和任何其他变量在这里都是nil的原因
解决方案:在子控制器中使用协议,创建委托并回调主控制器以进行页面转换。