title: Load images on a image view using horizontal scrolling
body: <p>I'm loading images on the <code>UIImageView</code> through a string and i want horizontal scrolling to view the images on a <code>UIImageView</code>.
  In my xib file I have a scroll view over which there is a image view. I'm using this code but my page is not scrolling and only the first image in the string is loaded.Can anyone please help.</p>
  
  <p>Code:</p>
  
  <pre><code>-(void)viewDidLoad
      {
          count=1;
         // imagesName = [[NSMutableArray alloc]initWithObjects :@"election_band_base.jpg", @"ElectionBoxAPPA-Hindi(1).jpg", @"photos.png", @"business.png", @"health.png", nil];
  
           imagesName1 = [NSString stringWithFormat :@"election_band_base.jpg", @"ElectionBoxAPPA-Hindi(1).jpg", @"photos.png", @"business.png", @"health.png", nil];
  
          [imagesName addObject:imagesName1];
  
                  items = [[NSMutableArray alloc]init];
  
  
          // [_imageView1.image setImage=imagesName1];
  
          [super viewDidLoad];
          // Do any additional setup after loading the view, typically from a nib.
         // _imageView1.image=[UIImage animatedImageWithImages:imagesName duration:0];
  
          _imageView1.image=[UIImage imageNamed:imagesName1 ];
  
          [self loadScrollView];
  
      }
  
  
  
          -(void)loadScrollView
  
          {
  
              scrollView.contentSize = CGSizeMake(0, scrollView.frame.size.height);
  
  
  
              NSMutableArray *controllers = [[NSMutableArray alloc] init];
  
              for (unsigned i = 0; i &lt; [imagesName count]; i++) {
  
                  [controllers addObject:[NSNull null]];
  
              }
  
              self.viewControllers = controllers;
              count=1;
  
  
              // a page is the width of the scroll view
  
              scrollView.pagingEnabled = YES;
  
              scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * [imagesName count], scrollView.frame.size.height);
              //scrollView.contentSize = CGSizeMake(900,80);
  
  
              scrollView.showsHorizontalScrollIndicator =YES;
  
              scrollView.showsVerticalScrollIndicator = YES;
  
              scrollView.scrollsToTop = NO;
  
              scrollView.delegate = self;
  
  
              pageControl.numberOfPages = [imagesName count];
  
              pageControl.currentPage = 0;
  
  
  
  
  
              // pages are created on demand
  
              // load the visible page
  
              // load the page on either side to avoid flashes when the user starts scrolling
  
              [self loadScrollViewWithPage:0];
  
              [self loadScrollViewWithPage:1];
  
          }
  
  
  
  
  
  
  
         - (void)loadScrollViewWithPage:(int)page {
  
              if (page &lt; 0) return;
  
              if (page &gt;= [imagesName count])
  
                  return;
  
  
              // replace the placeholder if necessary
  
              controller = [viewControllers objectAtIndex:page];
  
              if ((NSNull *)controller == [NSNull null]) {
  
                  NSString *deviceType = [UIDevice currentDevice].model;
  
                  if([deviceType isEqualToString:@"iPhone"])
  
                  {
  
                      controller = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
  
                  }
  
                  else{
  
                      controller = [[MyViewController alloc] initWithNibName:@"MyViewController_ipad" bundle:nil];
  
                  }
  
                  [controller initWithPageNumber:page];
  
                  [controller setArrData:imagesName];
  
                  [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;
  
                  [scrollView addSubview:controller.view];
  
              }
  
          }
  
          - (void)unloadScrollViewWithPage:(int)page {
  
              if (page &lt; 0) return;
  
              if (page &gt;= [imagesName 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]];
  
  
  
              }
  
          }
  
  
  
          - (void)scrollViewDidScroll:(UIScrollView *)sender {
  
              // We don't want a "feedback loop" between the UIPageControl and the scroll delegate in
  
              // which a scroll event generated from the user hitting the page control triggers updates from
  
              // the delegate method. We use a boolean to disable the delegate logic when the page control is used.
  
              if (pageControlUsed) {
  
                  // do nothing - the scroll was initiated from the page control, not the user dragging
  
                  return;
  
              }
  
  
              // Switch the indicator when more than 50% of the previous/next page is visible
  
              CGFloat pageWidth = scrollView.frame.size.width;
  
              int page = floor((scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
  
              pageControl.currentPage = page;
  
              //    NSLog(@"current page %d",page);
  
  
              // load the visible page and the page on either side of it (to avoid flashes when the user starts scrolling)
  
              [self unloadScrollViewWithPage:page - 2];
  
              [self loadScrollViewWithPage:page - 1];
  
              [self loadScrollViewWithPage:page];
  
              [self loadScrollViewWithPage:page + 1];
  
              [self unloadScrollViewWithPage:page + 2];
  
              count=page+1;
  
  
  
  
              // A possible optimization would be to unload the views+controllers which are no longer visible
  
          }
  
  
  
          // At the begin of scroll dragging, reset the boolean used when scrolls originate from the UIPageControl
  
          - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollViewLoc
  
          {
  
              CGFloat pageWidth = scrollViewLoc.frame.size.width;
  
              CGPoint translation = [scrollViewLoc.panGestureRecognizer translationInView:scrollViewLoc.superview];
  
              int page = floor((scrollViewLoc.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
  
  
  
  
  
                                 }
  
  
  
          // At the end of scroll animation, reset the boolean used when scrolls originate from the UIPageControl
  
          - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
  
              pageControlUsed = NO;
  
          }
  
  - (IBAction)changePage:(id)sender
  {
      int page = pageControl.currentPage;
  
  
              // load the visible page and the page on either side of it (to avoid flashes when the user starts scrolling)
  
              [self loadScrollViewWithPage:page - 1];
  
              [self loadScrollViewWithPage:page];
  
              [self loadScrollViewWithPage:page + 1];
  
  
  
              // update the scroll view to the appropriate page
  
              CGRect frame = scrollView.frame;
  
              frame.origin.x = frame.size.width * page;
  
              frame.origin.y = 0;
  
              [scrollView scrollRectToVisible:frame animated:YES];
  
  
  
              // Set the boolean used when scrolls originate from the UIPageControl. See scrollViewDidScroll: above.
  
              pageControlUsed = YES;
  
  
  
          }
  </code></pre>