iOS
UIPageViewController
खोज…
परिचय
UIPageViewController उपयोगकर्ताओं को एक स्वाइप जेस्चर का उपयोग करके आसानी से कई दृश्यों के बीच संक्रमण करने की क्षमता प्रदान करता है। UIPageViewController बनाने के लिए, आपको UIPageViewControllerDataSource विधियों को लागू करना होगा। इनमें प्रेजेंटेशनाउंट और प्रेजेंटेशन इंडेक्स के तरीकों के साथ-साथ वर्तमान यूआईपीएज व्यू कॉन्ट्रोलर के पहले और बाद में यूआईपीएज व्यू कॉन्ट्रोलर दोनों को वापस करने के तरीके शामिल हैं।
वाक्य - विन्यास
- UIPageViewControllerTransitionStyle
- UIPageViewControllerNavigationOrientation
- UIPageViewControllerSpineLocation
- UIPageViewControllerNavigationDirection
टिप्पणियों
Apple डेवलपर संदर्भ यहाँ
एक क्षैतिज पेजिंग UIPageViewController प्रोग्राम बनाएं
- व्यू कंट्रोलर्स की इनिट सरणी जिसे 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];
- UIPageViewController उदाहरण बनाएँ।
UIPageViewController *pageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll
navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal
options:nil];
- डेटा स्रोत वर्तमान वर्ग है जिसे
UIPageViewControllerDataSource
प्रोटोकॉल को लागू करना चाहिए।
pageViewController.dataSource = self;
-
setViewControllers
केवल पहले दृश्य नियंत्रक को जोड़ देगा, अगला डेटा स्रोत विधियों का उपयोग करके स्टैक में जोड़ा जाएगा
if (viewControllers.count) {
[pageViewController setViewControllers:@[[viewControllers objectAtIndex:0]]
direction:UIPageViewControllerNavigationDirectionForward
animated:NO
completion:nil];
}
- UIPageViewController को चाइल्ड व्यू कंट्रोलर के रूप में जोड़ें, ताकि यह इसे पेरेंट व्यू कंट्रोलर
appearance
औरrotation
घटनाओं से प्राप्त होगा।
[self addChildViewController:pageViewController];
pageViewController.view.frame = self.view.frame;
[self.view addSubview:pageViewController.view];
[pageViewController didMoveToParentViewController:self];
- 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;
}
- यूटिलिटी मेथड, जो इंडेक्स का उपयोग करके एक व्यू कंट्रोलर देता है, यदि इंडेक्स सीमा से बाहर है तो यह रिटर्न देता है।
- (UIViewController *)childViewControllerAtIndex:(NSInteger)index
{
if (index <= ([viewControllers count] - 1)) {
return [viewControllers objectAtIndex:index];
} else {
return nil;
}
}
क्षैतिज पृष्ठ दृश्य नियंत्रक (अनंत पृष्ठ) बनाने का एक सरल तरीका
- चलो एक नया प्रोजेक्ट बनाते हैं, मैं बेहतर प्रदर्शन के लिए सिंगल व्यू एप्लिकेशन चुन रहा हूं
- स्टोरीबोर्ड पर एक पृष्ठ दृश्य नियंत्रक खींचें, 2 चीजें हैं जो आपको उसके बाद बदलनी चाहिए:
- पृष्ठ दृश्य नियंत्रक को प्रारंभिक दृश्य नियंत्रक के रूप में सेट करें
- स्क्रॉल करने के लिए संक्रमण शैली बदलें
और आपको एक UIPageViewController क्लास बनाने की जरूरत है, फिर इसे स्टोरीबोर्ड पर पेज व्यू कंट्रोलर के कस्टम क्लास के रूप में सेट करें
इस कोड को अपने 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 } }
यह वही है जो अंतिम परियोजना की तरह दिखता है, आपको प्रत्येक स्क्रॉल के साथ अलग-अलग रंग के साथ एक दृश्य नियंत्रक मिलता है: