मैं एक पेज व्यू कंट्रोलर बनाने की कोशिश कर रहा हूं कि एक बार जब आप आखिरी स्क्रीन (दाएं स्वाइपिंग) पर पहुंच जाते हैं तो यह पहली बार शुरू होता है, और यदि आप पहली स्क्रीन (बाएं स्वाइपिंग) हिट करने के बाद पीछे की ओर स्क्रॉल करते हैं तो यह आखिरी तक स्क्रॉल करेगा .
मैंने इस पोस्ट को देखा: मंडलियों में स्क्रॉल करें
लेकिन स्क्रॉल करते समय यह अभी भी पहली और आखिरी स्क्रीन पर रुक रहा है। यहां बताया गया है कि मेरा डेटा स्रोत कैसे सेट किया गया है:
var viewControllerList: [UIViewController]!
func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
guard let vcIndex = viewControllerList.firstIndex(of: viewController) else {return nil}
let previousIndex = vcIndex - 1
guard previousIndex >= 0 else {return viewControllerList.last}
guard viewControllerList.count > previousIndex else { return nil}
return viewControllerList[previousIndex]
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
guard let vcIndex = viewControllerList.firstIndex(of: viewController) else {return nil}
let nextIndex = vcIndex + 1
guard viewControllerList.count != nextIndex else {return nil}
guard viewControllerList.count > nextIndex else
{
return viewControllerList.first}
return viewControllerList[nextIndex]
}
किसी भी मदद की सराहना की जाती है !!
2 जवाब
यह उन रेखाओं के कारण है जहां आप return nil
हैं। जब तक आप ऐसा करते हैं, इसका अर्थ है "इस दिशा में आगे बढ़ना असंभव है"। लेकिन मेरा मानना है कि आपकी आवश्यकता यह है कि हमेशा आगे या तो दिशा में जाना संभव है। मैं
आपका अनुक्रमणिका तर्क दोषपूर्ण है।
उदाहरण के लिए पहले तर्क में आप जांचते हैं
previousIndex >= 0
इसका मतलब है कि आप कभी भी विपरीत दिशा में 0 को इंडेक्स नहीं करेंगे। आपको उस चेक में चाहिए
previousIndex > -1
यह सुनिश्चित करने के लिए कि आप अनुक्रमणिका क्रम में 3 पृष्ठ सरणी के मामले में आगे बढ़ सकते हैं
2,1,0,2…
इसी तरह आगे दिशा में आप उपयोग करते हैं
guard viewControllerList.count != nextIndex else {return nil}
जब आप पहला नियंत्रक वापस करना चाहते हैं तो अनुक्रम को प्रभावी ढंग से रोकना
guard viewControllerList.count != nextIndex else {return viewControllerList.first}
सुनिश्चित करें कि आपका तर्क आपको 3 पृष्ठ के मामले में अनुक्रमणिका दे सकता है।
0,1,2,0…
संबंधित सवाल
नए सवाल
ios
iOS, Apple iPhone, iPod टच और iPad पर चलने वाला मोबाइल ऑपरेटिंग सिस्टम है। IOS प्लेटफॉर्म पर प्रोग्रामिंग से संबंधित प्रश्नों के लिए इस टैग [ios] का उपयोग करें। उन प्रोग्रामिंग भाषाओं के लिए विशिष्ट मुद्दों के लिए संबंधित टैग [उद्देश्य-सी] और [स्विफ्ट] का उपयोग करें।