2015-02-19 9 views
8

के साथ त्रुटि उत्पन्न कर रहा है मेरे पास एक मूल वॉचकिट ऐप है जो 3 इंटरफ़ेस नियंत्रकों के पृष्ठ आधारित नेविगेशन को लोड करता है। यह अच्छी तरह से काम करता है, लेकिन फिर मैं पेज-नियंत्रण को हटाने के लिए एक क्रिया को ट्रिगर करना चाहता हूं और अनिवार्य रूप से मूल इंटरफ़ेस नियंत्रक पर वापस लौटना चाहता हूं जो ऐप पहले लोड होने पर मौजूद था।वॉचकिट रीलोडरूट कंट्रोलर विथनाम पेज कंट्रोलर के साथ या पुश/पॉप

// load page based control, with 3 views. this works ok 
[WKInterfaceController reloadRootControllersWithNames:@[@"pageController1",@"pageController2",@"pageController3"] 
         contexts:@[@"data1",@"data2",@"data3"]]; 

// attempt to reload original interface controller, identified by storyboard id 
[WKInterfaceController reloadRootControllersWithNames:@[@"myInterfaceController"] contexts:@[@{}]]; 

पेज आधारित नेविगेशन निकालें, एक छोटी स्पिनर के बाद मूल नेविगेशन लोड होता है। हालांकि यह सही ढंग से काम करने में विफल रहता है और मूल क्रियाएं इस त्रुटि में परिणाम देती हैं।

Extension[6766:123665] *********** ERROR 
-[SPRemoteInterface _interfaceControllerClientIDForControllerID:] clientIdentifier for interfaceControllerID:(null) not found 

क्या मूल इंटरफ़ेस नियंत्रक को साफ़ करने के लिए कोई बेहतर तरीका है?

संपादित करें, 2/19

ऐसा लगता है कुछ अन्य कार्यों कि इस त्रुटि को भी उत्पन्न कर रहे हैं देखते हैं। उदाहरण के लिए, यदि किसी दूसरे इंटरफ़ेस नियंत्रक से segue और फिर वापस पाने के लिए पॉपकंट्रोलर, त्रुटि अक्सर प्रकट होती है। यह हमेशा इस समारोह के लिए एक माध्यमिक कॉल से संबंधित है।

[WKInterfaceController reloadRootControllersWithNames: contexts:] 

EDIT2, 3/18

जैसा कि पहले उल्लेख किया है, इस seguePush, popController कर रही है, तो reloadRootControllersWithNames करने का प्रयास करके समय की प्रतिलिपि प्रस्तुत करने योग्य 100% है।

यदि seguePush/popController पहले से नहीं किया गया है, तो reloadRootControllersWithNames ठीक काम करेगा।

यह स्थिति इस बग के बहु-> बहु-बहु उदाहरण के अतिरिक्त प्रतीत होती है।

+0

यह अभी भी Xcode 6.2 बाएं बीटा के बाद होता है और इसे स्थिर माना जाता है। – Miro

+0

इस लिंक में उत्तर में वर्कअराउंड http://stackoverflow.com/questions/28954007/page-based-reloadrootcontrollerswithnames-on-launch-loop आपकी मदद करनी चाहिए। – oOEric

उत्तर

0

के लिए एप्लिकेशन विकसित मैं एक धक्का दिया दृश्य नियंत्रक पर popController का उपयोग नहीं करके इस समस्या के अपने उदाहरण का समाधान करने में सक्षम था से निपटने के लिए में से एक। इसके बजाय मैं पॉपकंट्रोलर के स्थान पर एक reloadRootControllersWithNames का उपयोग करता हूं।

यह कैसे दोनों धक्का और पेजिंग की अनुमति देता है, एक उदाहरण के माध्यम से:

  1. पुश एक दृश्य नियंत्रक
  2. reloadRootControllersWithNames मूल नियंत्रक पर लौटने के लिए। (संक्रमण एनिमेटेड के रूप में काफी नहीं है, लेकिन पर्याप्त है)
  3. पृष्ठ आधारित दृश्य नियंत्रक बनाएं।
  4. reloadRootControllers मूल नियंत्रक पर वापस जाने के लिए विथनाम
  5. आवश्यकतानुसार 1 या 3 दोहराएं।

यह गैर-एनिमेटेड पॉपकंट्रोलर की लागत पर त्रुटि को समाप्त करता है, और आंशिक पुशिंग और पेजिंग की अनुमति देता है। हालांकि यह अधिक जटिल धक्का नेविगेशन की अनुमति नहीं देगा।

पुश कॉल के बिना उप इंटरफ़ेस नियंत्रक पर नेविगेट करने का एक बेहतर तरीका हो सकता है, लेकिन मुझे अभी तक घड़ी पर इसके बारे में पता नहीं है।

+0

यदि आपको केवल 1 की पदानुक्रमित गहराई की आवश्यकता है तो आप एक टैप किए गए आइटम का विवरण एक सामान्य रूप से प्रस्तुत इंटरफ़ेस नियंत्रक के रूप में प्रस्तुत कर सकते हैं। –

+0

ध्यान दें कि ** यह व्यवहार एक बग नहीं है ** और ऐप्पल के दस्तावेज विशेष रूप से कहते हैं कि @topes उत्तर में नोट किए गए उनके वॉचकिट दस्तावेज़ में पदानुक्रमित नेविगेशन प्रकारों को मिश्रित न करें, जिसके परिणामस्वरूप ऐपस्टोर सबमिशन रिजेक्शन हो सकता है और/या इस दृष्टिकोण को आजमाने वाले किसी को छोड़ दें यदि ऐप्पल अंतर्निहित एसडीके को इस तरह के कामकाज को तोड़ता है तो बहुत सारे तकनीकी ऋण के साथ। http://stackoverflow.com/a/29594055/868193 –

1

यह एक्सकोड 6.2 बीटा 5 में वॉचकिट में एक बग है। कृपया यह तय करने के लिए प्राथमिकता बढ़ाने में सहायता के लिए ऐप्पल के Bug Reporting System पर निम्न radar डुप्लिकेट करें।

इस बीच, मुझे मिला एक कामकाज dev forums पर पाया जा सकता है। आप क्या कर सकते हैं किसी भी इंटरफ़ेस नियंत्रक पृष्ठ सेट पर एक डमी इंटरफ़ेस नियंत्रक जोड़ें ताकि आपके पास हमेशा दो हो। यह तब तक त्रुटि को ठीक करेगा जब तक कि ऐप्पल को बग तय नहीं हो जाता (उम्मीद है कि बीटा 6 में)। कृपया डुप्लिकेट करें!

+0

हाय @ मिरो, अगर इस उत्तर ने आपको अपनी समस्या का समाधान करने में मदद की, तो क्या आप इसे इस तरह चिह्नित कर सकते हैं? चीयर्स। – cnoon

+1

मैंने अभी इसे डुप्लिकेट किया है। यह अभी भी 6.2 सार्वजनिक (संस्करण 6.2 (6 सी 121)) – burin

2

यह वास्तव में एप्पल के अनुसार क्योंकि एक बग नहीं है:

आप श्रेणीबद्ध और पेज आधारित इंटरफेस शैलियों गठबंधन नहीं कर सकते। डिज़ाइन समय पर, आपको उस शैली का चयन करना होगा जो उस शैली के लिए आपके ऐप की सामग्री और डिज़ाइन के लिए उपयुक्त है।

तो दुर्भाग्यवश, हम समान घड़ी ऐप के भीतर पदानुक्रमित और पृष्ठ-आधारित नेविगेशन पैटर्न को मिश्रित नहीं कर सकते हैं।

बस कई सीमाएं हम जब  घड़ी

+0

में हुआ है, मैंने इसे पढ़ लिया और माना कि इसका मतलब है कि आप पृष्ठ आधारित नियंत्रण के अंदर से नहीं धकेल सकते हैं, या एक धक्का इंटरफ़ेस नियंत्रण के उप दृश्य के रूप में पृष्ठ आधारित नियंत्रण प्राप्त कर सकते हैं। मैंने रूट नियंत्रक को रीसेट करने का अनुमान लगाया था जिसका मतलब है कि आप प्रभावी ढंग से स्विच कर सकते हैं। – Miro

+0

@Miro 'reloadRootControllersWithNames: संदर्भों का प्रलेखन:' विशेष रूप से कहता है कि इसका उपयोग "पृष्ठ-आधारित नेविगेशन में रूट नियंत्रकों को पुनः लोड करने" के लिए किया जाता है। –

0

कोई भी या ऊपर दिए गए उत्तरों मेरे लिए काम नहीं करते हैं। यह समस्या तब शुरू हुई जब मैंने ऐप के लिए आइकन नाम और घड़ी ऐप नाम बदल दिया। मैं इसे इस तरह हल:

  • 1)> सुनिश्चित करें कि एप्लिकेशन समूह पर में है अपनी दृश्य एप्लिकेशन लक्ष्य> क्षमताओं पर क्लिक करें।
  • 2) सुनिश्चित करें कि ऐप समूह चुना गया है।
  • 3) Clic परिक्रमा तीर रीफ्रेश करें आइकन पर (यदि आप पहले यह था इस जाहिरा तौर पर सिर्फ इस बात ताज़ा होगी)
  • 4-चरण दोहराएं 1-3, लेकिन बहुत अपनी घड़ी एप्लिकेशन एक्सटेंशन का लक्ष्य के लिए।
  • 5-स्कीम बटन (स्टॉप बटन के दाईं ओर) पर क्लिक करें, और संपादन योजनाओं पर क्लिक करें।
  • 6-क्लिक करें अपने लक्ष्य का चयन भागो> जानकारी 7 में निष्पादन योग्य (वास्तव में यह पहले से ही का चयन किया जाना चाहिए, लेकिन इस विंडो खोलने करने लगता है विकल्प ताज़ा करते हैं, और पोंछ त्रुटि)

जाहिर है सभी इन बातों जब आप आइकन नाम (लक्ष्य नाम) बदलते हैं तो उपर्युक्त स्वचालित रूप से अपडेट नहीं होते हैं और आपको उन मेनू पर जाना होगा और उन्हें मैन्युअल रूप से रीफ्रेश करने के लिए खोलना होगा। शायद ऐप्पल पर शर्म आती है?

संबंधित मुद्दे