UIScrollView显示为零?

时间:2015-03-04 11:29:30

标签: ios objective-c uiscrollview uibutton

我有一个带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];
}

代码链接

code

1 个答案:

答案 0 :(得分:0)

您正在从 MainController 创建6个视图控制器,然后单击继续按钮,您将再次创建 MainController 的对象,认为该对象它将引用您创建这6个对象的相同对象。但事实并非如此,这个新的 MainController 是一个全新的对象,其组件仍未初始化。这就是你的滚动视图和任何其他变量在这里 nil 的原因 解决方案:在子控制器中使用协议,创建委托并回调 MainController 来执行该页面过渡。