2012-07-09 3 views
3

Я попытался осуществить подкачку с 2 видами из этого урока:UIScrollView пейджинга с 2 видами

Multiple virtual pages in a UIScrollView with just 2 child views

Я хотел изменить это, поставив UIScrollView на страницы и на каждой странице его обновления с новым содержанием:

-(void)addContent:(NSString*)txt{ 

    int size = 5; 
    UITextView *txtView; 
    int row = 0; 

    //from left 
    int xPlace = 0; 
    //space between row's 
    int rowSpace = 20; 
    //from top 
    int yPlace = 10; 

    // int button_with = scrollView.frame.size.width; 
    int button_height = 20; 

    for (int i = 0; i < size; i++) { 


     txtView = [[UITextView alloc] initWithFrame:CGRectMake(xPlace, row*rowSpace+yPlace, scrollView.frame.size.width, 2*button_height)]; 
     [txtView setFont:[UIFont fontWithName:@"ArialMT" size:14]]; 
     txtView.backgroundColor = [UIColor blueColor]; 

     [txtView setText:[NSString stringWithFormat:@"Numer %@ - %i",txt,i]]; 

     // answerCheck.titleLabel.font = [UIFont boldSystemFontOfSize:fontSize]; 


     [scrollView addSubview:txtView]; 
     [txtView release]; 
     row++; 
    } 

    [scrollView setContentSize:CGSizeMake(scrollView.frame.size.width, txtView.frame.size.height*size)]; 
} 

Идея заключается в том, что прокрутка просто заменяет uiviewcontroller новым контентом. Он называет:

- (void)setPageIndex:(NSInteger)newPageIndex 
{ 
    pageIndex = newPageIndex; 

    if (pageIndex >= 0 && pageIndex < [[DataSource sharedDataSource] numDataPages]) 
    { 
     NSDictionary *pageData = 
      [[DataSource sharedDataSource] dataForPage:pageIndex]; 
     label.text = @"Tekstas";//[pageData objectForKey:@"pageName"]; 
     textView.text = [pageData objectForKey:@"pageText"]; 
     [self addContent:[pageData objectForKey:@"pageText"]]; 
     CGRect absoluteRect = [self.view.window 
      convertRect:textView.bounds 
      fromView:textView]; 
     if (!self.view.window || 
      !CGRectIntersectsRect(
       CGRectInset(absoluteRect, TEXT_VIEW_PADDING, TEXT_VIEW_PADDING), 
       [self.view.window bounds])) 
     { 
      textViewNeedsUpdate = YES; 
     } 
    } 
} 

Ну вот я застрял. Мое текстовое представление обновляется, но новый контент UIscrollView не обновляется в iPad-симуляторе.

Да, я имею в виду, в iphone это работает, в то время как в iPad это не так. Что я могу улучшить, если я хочу достичь этой функциональности?

Возможно, есть другой способ сделать подкачку из iOS 5?

Я бы поставил источник, который пытался сделать работу.

Download source

ответ

2

Вы можете просто использовать nib файл добавить UIScrollView с исправлением width и height. Теперь сделайте несколько страниц как UIView и добавьте их в UIScrollView с такими же размерами и тем же origin. В главном UIView:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    scrollView.contentSize = CGSizeMake(scrollView.frame.size.width, scrollView.frame.size.height * 2); 
} 

-(void)viewWillAppear:(BOOL)animated{ 
    CGFloat h = scrollView.frame.size.height; 
    [pageView1 setFrame:CGRectMake(0, 0, pageView1.frame.size.width, pageView1.frame.size.height)]; 

    [pageView2 setFrame:CGRectMake(0, h, pageView2.frame.size.width, pageView2.frame.size.height)]; 
} 

И не забудьте проверить Paging Enabled для UIScrollView в Attribute с в файле nib.

Я надеюсь, что пригодится для вас!

+0

Извините, я предположил, что ваша прокрутка горизонтально! –

+1

Я отредактировал ваш ответ, чтобы соответствовать его вопросу – nfarshchi

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