खोज…


परिचय

UIPageViewController उपयोगकर्ताओं को एक स्वाइप जेस्चर का उपयोग करके आसानी से कई दृश्यों के बीच संक्रमण करने की क्षमता प्रदान करता है। UIPageViewController बनाने के लिए, आपको UIPageViewControllerDataSource विधियों को लागू करना होगा। इनमें प्रेजेंटेशनाउंट और प्रेजेंटेशन इंडेक्स के तरीकों के साथ-साथ वर्तमान यूआईपीएज व्यू कॉन्ट्रोलर के पहले और बाद में यूआईपीएज व्यू कॉन्ट्रोलर दोनों को वापस करने के तरीके शामिल हैं।

वाक्य - विन्यास

  1. UIPageViewControllerTransitionStyle
  2. UIPageViewControllerNavigationOrientation
  3. UIPageViewControllerSpineLocation
  4. UIPageViewControllerNavigationDirection

टिप्पणियों

Apple डेवलपर संदर्भ यहाँ

एक क्षैतिज पेजिंग UIPageViewController प्रोग्राम बनाएं

  1. व्यू कंट्रोलर्स की इनिट सरणी जिसे UIPageViewController द्वारा प्रबंधित किया जाएगा। एक बेस व्यू कंट्रोलर क्लास जोड़ें, जिसमें प्रॉपर्टी identifier जो यूआईपीएज व्यू कॉन्ट्रोलर डेटा डेटा विधियों के साथ काम करते समय व्यू कंट्रोलर्स की पहचान करने के लिए उपयोग किया जाएगा। उस बेस क्लास से इनहेरिट करने दें।
UIViewController *firstVC = [[UIViewController alloc] init]; 
firstVC.identifier = 0  
UIViewController *secondVC = [[UIViewController alloc] init];   
secondVC.identifier = 1
NSArray *viewControllers = [[NSArray alloc] initWithObjects: firstVC, secondVC, nil];
  1. UIPageViewController उदाहरण बनाएँ।
UIPageViewController *pageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll
                                                                           navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal
                                                                                         options:nil];
  1. डेटा स्रोत वर्तमान वर्ग है जिसे UIPageViewControllerDataSource प्रोटोकॉल को लागू करना चाहिए।
pageViewController.dataSource = self;
  1. setViewControllers केवल पहले दृश्य नियंत्रक को जोड़ देगा, अगला डेटा स्रोत विधियों का उपयोग करके स्टैक में जोड़ा जाएगा
if (viewControllers.count) {
    [pageViewController setViewControllers:@[[viewControllers objectAtIndex:0]]
                                 direction:UIPageViewControllerNavigationDirectionForward
                                  animated:NO
                                completion:nil];
}
  1. UIPageViewController को चाइल्ड व्यू कंट्रोलर के रूप में जोड़ें, ताकि यह इसे पेरेंट व्यू कंट्रोलर appearance और rotation घटनाओं से प्राप्त होगा।
 [self addChildViewController:pageViewController];
 pageViewController.view.frame = self.view.frame;
 [self.view addSubview:pageViewController.view];
 [pageViewController didMoveToParentViewController:self];
  1. UIPageViewControllerDataSource विधियों को लागू करना
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
      viewControllerBeforeViewController:(UIViewController *)viewController
{
    index = [(Your View Controler Base Class *)viewController identifier];
    index--;
    return [self childViewControllerAtIndex:index];
}

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
       viewControllerAfterViewController:(UIViewController *)viewController
{
    index = [(Your View Controler Base Class *)viewController identifier];
    index++;
    return [self childViewControllerAtIndex:index];
}

- (NSInteger)presentationCountForPageViewController:(UIPageViewController *)pageViewController
{
    return [viewControllers count];
}

- (NSInteger)presentationIndexForPageViewController:(UIPageViewController *)pageViewController
{
    return index;
}
  1. यूटिलिटी मेथड, जो इंडेक्स का उपयोग करके एक व्यू कंट्रोलर देता है, यदि इंडेक्स सीमा से बाहर है तो यह रिटर्न देता है।
- (UIViewController *)childViewControllerAtIndex:(NSInteger)index
{
    if (index <= ([viewControllers count] - 1)) {
        return [viewControllers objectAtIndex:index];
    } else {
        return nil;
    }
}

क्षैतिज पृष्ठ दृश्य नियंत्रक (अनंत पृष्ठ) बनाने का एक सरल तरीका

  1. चलो एक नया प्रोजेक्ट बनाते हैं, मैं बेहतर प्रदर्शन के लिए सिंगल व्यू एप्लिकेशन चुन रहा हूं

यहाँ छवि विवरण दर्ज करें

  1. स्टोरीबोर्ड पर एक पृष्ठ दृश्य नियंत्रक खींचें, 2 चीजें हैं जो आपको उसके बाद बदलनी चाहिए:
    1. पृष्ठ दृश्य नियंत्रक को प्रारंभिक दृश्य नियंत्रक के रूप में सेट करें
    2. स्क्रॉल करने के लिए संक्रमण शैली बदलें

यहाँ छवि विवरण दर्ज करें

  1. और आपको एक UIPageViewController क्लास बनाने की जरूरत है, फिर इसे स्टोरीबोर्ड पर पेज व्यू कंट्रोलर के कस्टम क्लास के रूप में सेट करें

  2. इस कोड को अपने UIPageViewController वर्ग में पेस्ट करें, आपको एक रंगीन अनंत पृष्ठांकित ऐप मिलनी चाहिए :)

    class PageViewController: UIPageViewController, UIPageViewControllerDataSource {
    
        override func viewDidLoad() {
            self.dataSource = self
            let controller = createViewController()
            self.setViewControllers([controller], direction: .forward, animated: false, completion: nil)
        }
    
        func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
            let controller = createViewController()
            return controller
        }
    
        func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
            let controller = createViewController()
            return controller
        }
    
        func createViewController() -> UIViewController {
            var randomColor: UIColor {
                return UIColor(hue: CGFloat(arc4random_uniform(360))/360, saturation: 0.5, brightness: 0.8, alpha: 1)
            }
            let storyboard = UIStoryboard(name: "Main", bundle: nil)
            let controller = storyboard.instantiateViewController(withIdentifier: "View Controller")
            controller.view.backgroundColor = randomColor
            return controller
        }
    }
    

यह वही है जो अंतिम परियोजना की तरह दिखता है, आपको प्रत्येक स्क्रॉल के साथ अलग-अलग रंग के साथ एक दृश्य नियंत्रक मिलता है:

यहाँ छवि विवरण दर्ज करें



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow