2012-12-13 12 views
35

यहाँ की डॉट्स क्लिक करने पर पेज को बदल सकते हैं मैं एक pagecontrol जो अच्छा काम करता है लेकिन डॉट पर क्लिक करने पर यह पृष्ठ नहीं बदलता तो कृपया changepage के समारोह में मदद:कैसे मैं UIPageControl

- (void)viewDidLoad { 
    scrollView=[[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, 320, 420)]; 
    scrollView.delegate = self; 
    [self.scrollView setBackgroundColor:[UIColor whiteColor]]; 
    [scrollView setCanCancelContentTouches:NO]; 
    scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite; 
    scrollView.clipsToBounds = YES; 
    scrollView.scrollEnabled = YES; 
    [scrollView setShowsHorizontalScrollIndicator:NO]; 
    scrollView.pagingEnabled = YES; 
    [self.view addSubview:scrollView]; 
    pageControl=[[UIPageControl alloc]initWithFrame:CGRectMake(0, 420, 320, 40)]; 
    [pageControl addTarget:self action:@selector(changepage:) forControlEvents:UIControlEventTouchUpInside]; 
    [self.view addSubview:pageControl]; 

    UIView *blueView = [[UIView alloc] init]; 
    blueView.frame = CGRectMake(0, 0, 640, 480); 
    blueView.backgroundColor = [UIColor whiteColor]; 
    [scrollView addSubview:blueView]; 
    self.pageControl.numberOfPages = 2; 
    [scrollView setContentSize:CGSizeMake(640, 0)]; 
} 

-(void)changepage:(id)sender 
{ 
    int page = pageControl.currentPage; 
    if (page < 0) 
     return; 
    if (page >= 2) 
     return; 
    CGRect frame = scrollView.frame; 
    frame.origin.x = frame.size.width * page; 
    frame.origin.y = 0; 
    [scrollView scrollRectToVisible:frame animated:YES]; 

} 

- (void)scrollViewDidScroll:(UIScrollView *)_scrollView 
{ 
    if (pageControlIsChangingPage) 
     return; 
    CGFloat pageWidth = _scrollView.frame.size.width; 
    int page = floor((_scrollView.contentOffset.x - pageWidth/2)/pageWidth) + 1; 
    pageControl.currentPage = page; 
} 
+0

सवाल क्या है: आप "छोड़" और "सही" स्क्रॉल क्योंकि आईओएस ही पता चलता है कि जो आप सिर्फ सही फ्रेम करने के लिए स्क्रॉल कर सकते हैं उपयोग किया डॉट की देखभाल करने के लिए नहीं है? मुझे समझ में नहीं आया कि समस्या क्या है? –

+0

@pranjal सर मैं पेजcontrol –

+0

के बिंदुओं पर क्लिक करने के लिए पृष्ठ को स्थानांतरित करना चाहता हूं लिंक http://www.edumobile.org/iphone/iphone-programming-tutorials/pagecontrol-example-in-iphone/ –

उत्तर

59

आप एक घटना परिवर्तन पेज बना सकते हैं: Pagecontrol के मूल्य बदल घटना के लिए

- (IBAction)changePage:(id)sender { 
    UIPageControl *pager=sender; 
    int page = pager.currentPage; 
    CGRect frame = imageGrid_scrollView.frame; 
    frame.origin.x = frame.size.width * page; 
    frame.origin.y = 0; 
    [imageGrid_scrollView scrollRectToVisible:frame animated:YES]; 
} 

यह बाइंड।

2

यह UICollectionView के लिए एक स्विफ्ट 2 समाधान है। UIPageControl's dots पर क्लिक करके आपके वर्तमान दृश्य को बाएं या दाएं स्थान पर ले जाया गया है।

// Define bounds 
private var currentIndex:Int = 0 
private let maxLimit = 25 
private let minLimit = 0 

// Define @IBAction from UIPageControl 
@IBAction func moveViewLeftRight(sender: UIPageControl) { 
    // Move to Right 
    if currentIndex < maxLimit && sender.currentPage > currentIndex { 
     currentIndex++ 
     self.collectionView.scrollToItemAtIndexPath(NSIndexPath(forItem: currentIndex, inSection: 0), atScrollPosition: .Right, animated: true) 
    // Move to Left 
    } else if currentIndex > minLimit { 
     currentIndex-- 
     self.collectionView.scrollToItemAtIndexPath(NSIndexPath(forItem: currentIndex, inSection: 0), atScrollPosition: .Left, animated: true) 
    } 
} 
+0

के माध्यम से चला गया है scrollRectToVisible भी अधिक आसान है। लेकिन अगर आप अपने संग्रह दृश्य में किसी आइटम पर स्क्रॉल करना चाहते हैं तो आप केवल प्रेषक.currentPage पास कर सकते हैं। सिस्टम टैप किए गए डॉट को वर्तमान पृष्ठ के रूप में लागू करता है। – Fry

4

बस बैंकर मित्तल के उत्तर को पूरा करने के लिए, तेज़ी से ऐसा करने का सबसे आसान तरीका वांछित रेक्ट को दृश्यमान करना स्क्रॉल करना है।

private func moveScrollViewToCurrentPage() { 

//You can use your UICollectionView variable too instead of my scrollview variable 
      self.scrollView 
       .scrollRectToVisible(CGRect(
        x: Int(self.scrollView.frame.size.width) * self.pager.currentPage, 
        y: 0, 
        width:Int(self.scrollView.frame.size.width), 
        height: Int(self.scrollView.frame.size.height)), 
            animated: true) 

    } 
संबंधित मुद्दे