2013-10-26 16 views
5

में एक ही दृश्य नियंत्रक की कई प्रतियों का उपयोग करना मेरे पास मेरे ऐप में निम्न सेटअप है: मेरा प्रारंभिक दृश्य नियंत्रक एक UITabBarController है। टैब:स्टोरीबोर्ड

1) UINavigationController-> PostListVC
2) UINavigationController-> CategoriesListVC
3) UINavigationController-> PostListVC
4) UINavigationController-> PostListVC
5) UINavigationController-> MoreViewController

जैसा कि आप देख सकते हैं, 3 टैब में एक ही व्यू कंट्रोलर क्लास होता है, लेकिन इसमें एक ही व्यू कंट्रोलर ऑब्जेक्ट नहीं होना चाहिए - दृश्य ऐपडिलेगेट के रूप में प्राप्त होने वाली जानकारी के आधार पर अलग-अलग जानकारी प्रदर्शित करेगा।

मैंने जो किया है, मैंने 5 यूनाविगेशन नियंत्रकों को बनाया है, उन्हें uitabbarcontroller से जोड़ा है, फिर उनमें से 3 के लिए एक रूटव्यूकंट्रोलर सेगू बनाया है, उसी पोस्टलिस्टस्ट व्यू में - इस तरह मुझे उसी दृश्य के 3 डिज़ाइन बनाए रखने की आवश्यकता नहीं है।

मुझे जो समस्या मिलती है वह यह है कि केवल पहला पोस्टलिस्टिस्ट ठीक से बनाया जाता है (टैब बार में सबसे बाएं) - पोस्ट टैबिस्ट को इंगित करने वाले अन्य टैब बस एक ब्लैक स्क्रीन दिखाते हैं।

मैं स्टोरीबोर्ड तरह से मैं तार-अप वर्णन करने के लिए एक 3-टैब उदाहरण का उपयोग की कोशिश की है:, enter image description here
आप देख सकते हैं दोनों सबसे ऊपरी और निचले सबसे अधिक देखे PostListVC से जुड़े हैं।

मुझे नहीं पता कि समस्या क्या है। मुझे लगता है कि मैं कुछ हद तक गलत तरीके से स्टोरीबोर्ड का उपयोग कर रहा हूं।

क्या कोई जानता है कि मैं इसे कैसे ठीक कर सकता हूं?

धन्यवाद!

संपादित करें:

http://www.speedyshare.com/Srwfg/TabBarProblem.zip

संपादित करें 2: उदाहरण के एक संशोधित संस्करण, दिखा मैं एक सरल, उदाहरण के परियोजना (Xcode 5) इस समस्या illustartes बनाया है प्रस्तावित समाधान के साथ समस्या: http://speedy.sh/JkdGC/TabBarProblem-2.zip

इस के साथ अलग-अलग टैबबार बनाने के लिए कोई तरीका नहीं है विधि, और बार इटम्स को रखने का कोई तरीका नहीं है ताकि वे एक पंक्ति में न हों - भले ही आप segues के क्रम को हल करने का प्रयास करें।

+0

किसी के लिए मदद करने के लिए यहां पर्याप्त जानकारी नहीं है लेकिन छवि में कुछ भी त्रुटि का सुझाव नहीं देता है। मैं यह सुनिश्चित करने के लिए कि प्रत्येक सही नियंत्रक को पारित किया जा रहा है और सही UIViewController क्लास को तत्कालित किया जा रहा है, यह सुनिश्चित करने के लिए प्रत्येक व्यू कंट्रोलर (शायद 'viewDidLoad') में कुछ' NSLog 'जोड़ना है। ध्यान दें कि प्रत्येक अद्वितीय होना चाहिए। इस जटिल को कुछ डीबग करने का यही एकमात्र तरीका है। –

+0

दोनों दृश्यDidLoad और loadView को केवल एक बार बुलाया जाता है - PostListVC शायद सही ढंग से तत्काल नहीं हो रहा है, लेकिन मुझे नहीं पता क्यों। – Niv

+0

कुछ चीजों को जांचने के लिए: क्या कक्षा आईबी के अंदर सही ढंग से सेट है? PostListVC में एनएसएलओजी क्या आपको इसके बारे में बताता है? क्या आईबी में दृश्य देखा गया है? यकीन नहीं है कि मैं इन सवालों से परे मदद कर सकता हूं। –

उत्तर

0

जैसा कि आपने कहा था कि आपको PostListVC के तीन अलग-अलग उदाहरणों की आवश्यकता है, तो आपको PostListVC टाइप करने के तीन अलग-अलग व्यू कंट्रोलर बनाना चाहिए और प्रत्येक टैब को अपने आप से कनेक्ट करना चाहिए। कक्षा एक जैसी है लेकिन प्रत्येक टैब का अपना उदाहरण मिलता है।

+4

क्या सभी 3 एक ही xib साझा करने का कोई तरीका है? मैं वर्तमान में सभी डिजाइन स्टोरीबोर्ड – Niv

0

मुझे आपका उदाहरण प्रोग्राम काम करने के लिए मिला है लेकिन मुझे नहीं पता कि समाधान आपकी पूरी परियोजना के लिए काम करेगा या नहीं। उम्मीद है कि यह आपको सही रास्ते पर रखेगा।

समाधान एक (1) नेविगेशन नियंत्रक/एम्बेडेड रूट व्यू है लेकिन टैब बार नियंत्रक से दो (2) segues है।यहाँ चित्र है:

enter image description here

ऐसा लगता है कि वहाँ कई UINavigationController रों ही UIViewController को जोड़ने के साथ एक समस्या है। लेकिन इसके साथ ही UIViewController को जोड़ने में एक ही UINavigationController साथ कोई समस्या नहीं है बशर्ते कि वे UITabBarController के माध्यम से अलग से instantiated कर रहे हैं।

+2

अंदर मैं इस समाधान करने के साथ मिल गया है पकड़ है, हालांकि: 1) आप उदाहरण के लिए विभिन्न दृश्यों के लिए अलग tabBarItems (नहीं बना सकते, तो यू बटन के लिए विभिन्न चित्र होने इस तरह का प्रयोग) । 2) यह barItems अप bunches - आप 2 है कि एक ही ViewController से लिंक के बीच एक अलग tabBarItem नहीं जोड़ सकते। (EDIT 2 में जोड़े गए इस मुद्दे का उदाहरण) – Niv