2015-09-28 15 views
5

घड़ी गुण 2 से शुरू होने पर गुणों को सेट करना, हमारे पास ExtensionDelegate ऑब्जेक्ट है, जो UIApplicationDelegate (ऐप लाइफसाइकिल ईवेंट पर प्रतिक्रिया करता है) के समान है।watchOS 2: प्रारंभिक इंटरफ़ेस नियंत्रक

मैं पहली इंटरफ़ेस नियंत्रक ऑब्जेक्ट का संदर्भ प्राप्त करना चाहता हूं, जिसे लॉन्च पर प्रदर्शित किया जाएगा, उस पर एक संपत्ति सेट करने के लिए (उदा। डेटा स्टोर ऑब्जेक्ट में पास करें)।

docs के अनुसार

, WKExtension हाथ वापस प्रारंभिक नियंत्रक पर rootInterfaceController संपत्ति:

जड़ इंटरफेस नियंत्रक एप्लिकेशन की मुख्य स्टोरीबोर्ड में स्थित है और इसके साथ जुड़े मुख्य प्रवेश बिंदु वस्तु है। वॉचकिट लॉन्च समय पर रूट इंटरफ़ेस नियंत्रक प्रदर्शित करता है, हालांकि ऐप अनुक्रम समाप्त होने से पहले एक अलग इंटरफ़ेस नियंत्रक प्रस्तुत कर सकता है।

तो मैं ExtensionDelegate में निम्न प्रयास करें:

func applicationDidFinishLaunching() { 
    guard let initialController = WKExtension.sharedExtension().rootInterfaceController else { 
     return 
    } 

    initialController.dataStore = DataStore() 
} 

हालांकि सही इंटरफ़ेस नियंत्रक प्रदर्शित किया जाता है, rootInterfaceController इस बिंदु पर नहीं के बराबर है। दिलचस्प बात यह है कि अगर मैं अपने इंटरफेस नियंत्रक के willActivate() में एक ही संपत्ति से पूछता हूं, तो संपत्ति सही ढंग से सेट की जाती है।

आईओएस ऐप में, आप पहले ही रूट व्यू कंट्रोलर applicationDidFinishLaunching() में प्राप्त कर सकते हैं, और मैंने सोचा कि इसे watchOS के लिए भी काम करना चाहिए।

क्या मेरे इंटरफ़ेस नियंत्रक पर प्रदर्शित होने से पहले गुणों को सेट करने का कोई तरीका है (बाहर से)? क्या यह एक बग है?

उत्तर के लिए बहुत धन्यवाद!

+0

क्या आपको कभी इसका कारण मिला? @ józsef-vesza – Wilmar

+0

@ विल्मार दुर्भाग्य से नहीं। ऐसा लगता है कि इस चरण में 'rootInterfaceController' शून्य है, इसलिए मैंने अपने इंटरफ़ेस नियंत्रक उप-वर्गों में अपनी गुणों को तुरंत चालू कर दिया। अच्छा नहीं है, लेकिन यह अब तक का सबसे अच्छा है। :/ –

+0

एमएम मैं देखता हूँ। मैंने अपने कोड में एक 'dispatch_after' जोड़ा, इसे 1 सेकंड पर सेट किया गया, और फिर' rootInterfaceController' प्रॉपर्टी की अपेक्षित मान थी। काफी निराशाजनक। @ józsef-vesza – Wilmar

उत्तर

-1

आप अपना कोड applicationDidBecomeActive पर ले जा सकते हैं।

यह पृष्ठ घड़ी क्षुधा के राज्यों का वर्णन है। जब applicationDidFinishLaunching का आह्वान किया जाता है, तो ऐप एक निष्क्रिय स्थिति में होता है।

https://developer.apple.com/library/watchos/documentation/WatchKit/Reference/WKExtensionDelegate_protocol/index.html

+2

दुर्भाग्यवश, मैंने पहले से ही यह कोशिश की है, लेकिन 'WKExtension.sharedExtension()। RootInterfaceController' सभी एक्सटेंशन प्रतिनिधि कॉलबैक में 'nil' है। –

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