如何在不同视图上添加文本视图和图像视图

时间:2014-05-23 04:51:41

标签: ios

我根据我的数组计数添加了视图控制器并设置了水平滚动视图的内容大小。现在我希望在每个视图上显示一些文本。 为此,我采取了for循环,但我无法在视图上添加文本视图。 这是我的代码:

   -(void)loadScrollView

{

    scrollView.contentSize = CGSizeMake(0, scrollView.frame.size.height);

    NSMutableArray *controllers = [[NSMutableArray alloc] init];

    for (unsigned i = 0; i < [_arrUrlLinks count]; i++) {

        [controllers addObject:[NSNull null]];

    }


 //   MyViewController1 *controller;

    self.viewControllers = controllers;
    // self.viewControllers =_txtView;
    count=1;


    // a page is the width of the scroll view

    scrollView.pagingEnabled = YES;

    scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * [_arrUrlLinks count], scrollView.frame.size.height);

    scrollView.showsHorizontalScrollIndicator =YES;

    scrollView.showsVerticalScrollIndicator = NO;

    scrollView.scrollsToTop = NO;

    scrollView.delegate = self;


    pageControl.numberOfPages = [_arrUrlLinks count];

    pageControl.currentPage = 0;

}





- (void)loadScrollViewWithPage:(int)page {

    if (page < 0) return;

    if (page >= [_arrUrlLinks count])

        return;


    controller = [viewControllers objectAtIndex:page];

    if ((NSNull *)controller == [NSNull null]) {

        NSString *deviceType = [UIDevice currentDevice].model;

        if([deviceType isEqualToString:@"iPhone"])

        {

            controller = [[MyViewController1 alloc] initWithNibName:@"MyViewController1" bundle:nil];

        }

        else{

           controller = [[MyViewController1 alloc] initWithNibName:@"MyViewController1_ipad" bundle:nil];

        }


       [controller initWithPageNumber: page];



        NSLog(@"loadscrollviewwithpage");

        [viewControllers replaceObjectAtIndex:page withObject:controller];


    }

    // add the controller's view to the scroll view

    if (nil == controller.view.superview) {

        CGRect frame = scrollView.frame;

        frame.origin.x = frame.size.width * page;

        frame.origin.y = 0;

        controller.view.frame = frame;

               NSLog(@"111111%@",resultDicArray);

             NSLog(@"0000000%@",body);


        NSLog(@"header======.>>>>..%@",headerstr);




            } 



        [scrollView addSubview:controller.view]; 


    [self downLoadData:page]; 

}

- (void)unloadScrollViewWithPage:(int)page { 

    if (page < 0) return; 

    if (page >= [_arrUrlLinks count]) return; 


    controller = [viewControllers objectAtIndex:page]; 



    if ((NSNull *)controller != [NSNull null]) { 

        if (nil != controller.view.superview) 

            [controller.view removeFromSuperview]; 



        [viewControllers replaceObjectAtIndex:page withObject:[NSNull null]]; 

        NSLog(@"Unloadscrollviewwithpage"); 



    } 

} 



- (void)scrollViewDidScroll:(UIScrollView *)sender { 

    if (pageControlUsed) { 


        return; 

    } 



    CGFloat pageWidth = scrollView.frame.size.width; 

    int page = floor((scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1; 

    pageControl.currentPage = page; 

    [self unloadScrollViewWithPage:page - 2]; 

    [self loadScrollViewWithPage:page - 1]; 

    [self loadScrollViewWithPage:page]; 

    [self loadScrollViewWithPage:page + 1]; 

    [self unloadScrollViewWithPage:page + 2]; 

    count=page+1; 


    // [self newCountTitleSet]; 

} 





- (void)viewDidLoad 
{ 

    [super viewDidLoad]; 
    [self loadScrollView];

     [self loadScrollViewWithPage:0];
     [self loadScrollViewWithPage:1];

}

我已经成功地在滚动视图上添加了控制器,现在如何在控制器上添加文本视图。

2 个答案:

答案 0 :(得分:1)

试试这个,

....

if (nil == controller.view.superview) {
    .....
    CGRect frame = scrollView.frame;

    frame.origin.x = frame.size.width * page;

    frame.origin.y = 0;

    controller.view.frame = frame;

    //Add textview as subview to controller
    UITextView *textView = [[UITextView alloc] init];

    textView.text = @"hello";

    textView.frame = //set frame here

    //set tag to textView if needed
    [controller.view addSubView:textView];

    [scrollView addSubview:controller.view];
    NSLog(@"loadscrollviewwithpage................>>>>>>>>>>>>");
}

....

答案 1 :(得分:1)

例如,您想要10个不同的图像或textview,您可以使用此逻辑:

- (void)viewDidLoad {
    [super viewDidLoad];
    UIScrollView *scr=[[UIScrollView alloc] initWithFrame:CGRectMake(0, 0,  self.view.frame.size.width, self.view.frame.size.height)];
    scr.tag = 1;
    scr.autoresizingMask=UIViewAutoresizingNone;
    [self.view addSubview:scr];
    [self setupScrollView:scr];
    UIPageControl *pgCtr = [[UIPageControl alloc] initWithFrame:CGRectMake(0, 264, 480, 36)];
    [pgCtr setTag:12];
    pgCtr.numberOfPages=10;
    pgCtr.autoresizingMask=UIViewAutoresizingNone;
    [self.view addSubview:pgCtr];
}


- (void)setupScrollView:(UIScrollView*)scrMain {
    // we have 10 images here.
    // we will add all images into a scrollView &amp; set the appropriate size.

    for (int i=1; i<10; i++) {
        // create image
        UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"sti%02i.jpeg",i]];
        // create imageView
        UIImageView *imgV = [[UIImageView alloc] initWithFrame:CGRectMake((i-1)*scrMain.frame.size.width, 0, scrMain.frame.size.width, scrMain.frame.size.height)];
        // set scale to fill
        imgV.contentMode=UIViewContentModeScaleToFill;
        // set image
        [imgV setImage:image];
        // apply tag to access in future
        imgV.tag=i+1;
        // add to scrollView
        [scrMain addSubview:imgV];


        UITextView*txtview =[[UITextView alloc]initWithFrame:CGRectMake(10,50,200,200)];  
        [txtview setDelegate:self];    
        [txtview setReturnKeyType:UIReturnKeyDone];    
        [txtview setTag:1];
        [txtview setText:[yourArray ObjectAtIndex:i]];
        [txtview setCornerRadius:5];    
        [scrMain addSubview:txtview];


    }
    // set the content size to 10 image width
    [scrMain setContentSize:CGSizeMake(scrMain.frame.size.width*10, scrMain.frame.size.height)];


}