2014-05-23 147 views
0

我已经根据我的数组计数添加了视图控制器并设置了水平滚动视图的内容大小。现在我想要在每个视图上显示一些文本。 为此,我采取了一个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]; 

} 

我已经成功地将我的控制器在滚动视图现在如何通过控制器添加文本视图。

+0

您需要的广告不同'UITextView'在不同的'controller'如果你需要在所有'controller'中使用textview。创建一个'UITextView'并在初始化'controller'后将它作为子视图添加到'controller'中。 – Akhilrajtr

+0

当我添加textviews作为子视图它显示一些异常:[__NSCFConstantString超级查看]:无法识别的选择发送到实例0x10013cfd0' –

+0

我已经添加了一个示例方法,你可以尝试。 – Akhilrajtr

回答

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................>>>>>>>>>>>>"); 
} 

.... 
+0

不,这是不working.textview不添加在view.but但每当我chanel视图滚动这个日志事件滚动打印。 –

+0

您是否在任何地方添加了'controller.view'滚动视图? – Akhilrajtr

+0

是的,我已经添加了[controller.view addSubview:textview] –

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)]; 


} 
+0

好!很好的回答! –

相关问题