3

我尝试使用本教程中的 2 个视图实现分页:

UIScrollView 中的多个虚拟页面,只有 2 个子视图

我想通过将 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 进行分页?

我会放一个试图使工作正常的来源。

下载源

4

1 回答 1

2

您可以只使用一个nib文件添加一个UIScrollView带有修复widthheight. 现在制作一些页面作为 aUIView并将它们添加到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 EnabledUIScrollViewAttributes nib

希望对你有用!

于 2012-07-09T08:32:35.187 回答