2015-03-04 2 views
0

У меня есть один образец проекта с UIPageViewController. На моей первой странице (на странице viewcontroller: class name-step1Controller) есть одна кнопка «Продолжить». Когда я нажимаю на эту кнопку, мне нужно прокрутить первую страницу и показать вторую страницу (вместо того, чтобы прокручивать здесь, нажмите кнопку, чтобы изменить страницу).UIScrollView показывает ноль?

Так кнопка мыши я называюсь методом, чтобы сделать автоматическую прокрутку и деинсталляцию Fortunatly он показывает мой 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

+0

Если у вас есть UIPageViewController, использовать методы, которые она предоставляет: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIPageViewControllerClassReferenceClassRef/index.html#//apple_ref/occ/instm/UIPageViewController/setViewControllers: direction: анимированный: завершение: вы добавляете новые viewControllers в массив и передаете их этой функции. Вместо того, чтобы делать расчет scrollView самостоятельно. Если вы хотите остаться с UIScrollView, покажите нам код, в котором вы инициализируете scrollView, и где вы устанавливаете фрейм. – Paul

+0

внутри viewdidload .... scrollViewDrug = [[UIScrollView alloc] initWithFrame: CGRectMake (2,70,307,496)]; scrollViewDrug.showsVerticalScrollIndicator = YES; scrollViewDrug.scrollEnabled = YES; scrollViewDrug.userInteractionEnabled = YES; –

+0

Просто совет: измените свое сообщение, просто позвольте 3 строкам, которые объясняют, что вы хотите, и добавьте больше кода, чтобы мы лучше видели, что происходит, вместо публикации ссылки и попросите что-то скачать. Возможно, ваше сообщение может помочь кому-то еще в будущем. – Paul

ответ

0

Вы создаете 6 Список контроллеров от MainController, а затем на щелканье Продолжить кнопку, вы снова создаете объект MainController мышления, он будет ссылаться на тот же объект, из которого вы создали эти 6 объектов. Однако это не так, этот новый MainController - это совершенно новый объект, компоненты которого все еще не инициализированы. Вот почему ваш просмотр прокрутки и любая другая переменная будут nil здесь.
Решение: Используйте протокол в дочерних контроллеров, создать делегат и сделать обратный вызов MainController сделать переход страницы.

+0

Вы можете показать пример –

+0

, есть много примеров по шаблону делегата в Интернете. Просто найдите базовый учебник и сначала поймите концепцию. Тогда вы сможете реализовать его в своем проекте. – Gandalf

+0

Я не думаю, что это ответ, поэтому, пожалуйста, сделайте это как комментарий. –

Смежные вопросы