2012-04-11 20 views
6

में UIPageViewController का उपयोग करके मैं Xcode के स्टोरीबोर्ड के साथ UIPageViewController का उपयोग करना चाहता हूं। अलग-अलग xib फ़ाइलों का उपयोग करके UIPageViewcontroller को कार्यान्वित करने के तरीके पर मुझे एकमात्र उदाहरण मिल सकता था this tutorialएक स्टोरीबोर्ड

हालांकि इस ट्यूटोरियल में UIPageViewController को उस कक्षा के भीतर प्रोग्रामेटिक रूप से तत्काल किया जाता है जो UIViewController तक फैलाता है। इससे स्टोरीबोर्ड UIPageViewcontroller (जो कि स्वयं के उदाहरण के रूप में है) का अर्थ है, इसका अनुवाद करने में जटिल हो जाता है।

एक्सकोड के स्टोरीबोर्ड के साथ UIPageViewController बनाने के तरीके पर कोई मदद की सराहना की जाएगी।

अद्यतन: मैं डिफ़ॉल्ट पृष्ठ नियंत्रक टेम्पलेट का उपयोग कर एक्सकोड में एक नई परियोजना बनाकर इस समस्या को हल करने में कामयाब रहा। यह स्टोरीबोर्ड का इस्तेमाल करता था और इसका पालन करना आसान था।

+0

आपकी समस्या को सुनकर खुशी हुई है - आपको अपना समाधान एक उत्तर के रूप में पोस्ट करना चाहिए (और कल जवाब स्वीकार करना चाहिए) ताकि अन्य लोग इस विषय पर मदद की तलाश कर सकें। – rickster

उत्तर

8

अद्यतन: मैं डिफ़ॉल्ट पृष्ठ नियंत्रक टेम्पलेट का उपयोग कर xcode में एक नई परियोजना बनाकर इस समस्या को हल करने में कामयाब रहा। यह स्टोरीबोर्ड का इस्तेमाल करता था और इसका पालन करना आसान था।

+1

ऐप्पल डिफ़ॉल्ट कोड ने प्रोग्रामिंग रूप से UIPageViewController को तुरंत चालू किया ... –

7

पेजव्यू कंट्रोलर होने के लिए एक्सकोड प्रोजेक्ट सेट अप करना इसे पूरा करने का एक तरीका है, हालांकि यदि आप पहले से मौजूद स्टोरीबोर्ड में पेजव्यू कंट्रोलर शामिल करना चाहते हैं तो आप इसे भी कर सकते हैं।

यदि आप अपने स्टोरीबोर्ड पर पेजव्यू कंट्रोलर सीन खींचते हैं और छोड़ते हैं और एक सेग्यू तार करते हैं, तो आप उस पेज व्यू कंट्रोलर को दबा सकते हैं। हालांकि पेजव्यू कंट्रोलर को ठीक से सेट करने के लिए स्टोरीबोर्ड में कुछ बग दिखाई देती हैं, उदाहरण के लिए आप प्रतिनिधि और डेटासोर्स को तार नहीं बना सकते हैं। ,

- (instancetype) initWithCoder:(NSCoder *)aDecoder 
{ 
    if(self = [super initWithCoder:aDecoder]) 
    { 
     self.delegate = self; 
     self.dataSource = self; 
    } 
    return self; 
} 

यह आपके प्रतिनिधि और डेटा स्रोत के तरीकों का कारण होगा ठीक से नाम से जाना संभालने बेशक आप डेटा स्रोत हैं:

इस के चारों ओर एक आसान तरीका है बस अपने init विधि में प्रतिनिधि/डेटा स्रोत ऊपर तार की है और पेजव्यू कंट्रोलर होने के लिए प्रतिनिधियों। एक बार यह स्थापित हो जाने के बाद आपको यह सुनिश्चित करने की आवश्यकता होगी कि दृश्य लोड होने पर दृश्य नियंत्रक हो। आप अपने viewDidLoad में PageViewController वर्ग पर setViewControllers विधि के साथ ऐसा कर सकते हैं:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    [self setViewControllers:@[sweetViewController] direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:^(BOOL finished) { 
     NSLog(@"Hooray I set my initial viewcontroller for my page view controller"); 
    }]; 
} 

जब PageViewController बनाई गई है, यह आपके sweetViewController के साथ शुरू होगा, और उसके बाद आवश्यकता के अनुरूप अपने डेटा स्रोत और प्रतिनिधि तरीकों बुला शुरू करते हैं।

0

एक्सकोड 7 के साथ ऐसा करने का एक आसान तरीका है। व्यू कंट्रोलर है जो एक स्टोरीबोर्ड दृश्य में आपका डेटासेट और प्रतिनिधि होगा, जिसमें आपके UIPageViewController को कंटेनर व्यू में एम्बेड किया गया है। फिर अपने ViewController की तैयारी के लिए UIPageViewController को पकड़ें ForSegue विधि।

उदा। स्विफ्ट में:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

    if let identifier = segue.identifier where identifier == "yourPageVCIdentifier"{ 
     if let pageController = segue.destinationViewController as? UIPageViewController { 
      pageController.dataSource = self 
      pageController.delegate = self 
      self.pageVC = pageController 
     } 
    } 
} 
संबंधित मुद्दे