2015-02-22 7 views
6

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

प्रोजेक्ट एक्सकोड 6.1 द्वारा बनाए गए डिफ़ॉल्ट स्टोरीबोर्ड का उपयोग करके एकल-दृश्य ऐप है। यह AppDelegate.swift और ViewController.swift कक्षाओं के साथ-साथ Main.storyboard उत्पन्न करता है।

Btw, मैं एक तरह से इस ट्यूटोरियल के बंद जा रहा हूँ: बातें

http://www.raywenderlich.com/74904/swift-tutorial-part-2-simple-ios-app

मुझे मिल गया है एक बटन और TextView नियंत्रण है कि मैं स्टोरीबोर्ड इंटरफ़ेस बिल्डर का उपयोग करके जोड़ा के एक जोड़े के साथ काम।

अब मैं क्या करना चाहता हूं, ऐप प्रतिनिधि के एप्लिकेशन को हुक अप किया गया है, दृश्य नियंत्रक को ईवेंट फ़िनिश लॉन्च करना।

func application(application: UIApplication, 
    didFinishLaunchingWithOptions launchOptions: 
    [NSObject: AnyObject]?) -> Bool { 
} 

मुझे इस पर चर्चा करने वाले कई स्टैक ओवरफ्लो लेख मिल गए हैं, हालांकि उदाहरण आपके स्वयं के व्यू कंट्रोलर को तुरंत चालू करने के आसपास हैं। मैं स्टोरीबोर्ड के माध्यम से लॉन्च किए गए व्यू कंट्रोलर का संदर्भ प्राप्त करना चाहता हूं।

ऐसा करने का सबसे अच्छा तरीका क्या है? मुझे उपयुक्त दस्तावेज़, या अन्य पदों पर इंगित करने के लिए स्वतंत्र महसूस करें।

+0

AppDelgate हमेशा जड़ दृश्य नियंत्रक के लिए एक संदर्भ है और संपत्ति AppDelegate.window.rootViewController के माध्यम से संदर्भित किया जा सकता – Literphor

+2

AppDelegate की बजाय ViewController में जो करने का प्रयास कर रहे हैं, उसे ध्यान से विचार करें। AppDelegate में एक आम समस्या बहुत अधिक डाल रही है। यह लॉन्च घटनाओं और आपके ऐप के साथ होने वाली अन्य बाहरी चीजों पर प्रतिक्रिया देना है। यदि आप उससे ज्यादा कुछ कर रहे हैं, तो अपने डिजाइन पर पुनर्विचार करें। उस ने कहा, @ लाइटफोर सही है। – picciano

उत्तर

7

मैं अंत में checking the current view controller पर इस लेख है, जो तर्क मैं खोज रहा था था पाया:

var myViewController : ViewController! 
... 
if let viewControllers = self.window?.rootViewController?.childViewControllers { 
    for viewController in viewControllers { 
     if viewController.isKindOfClass(ViewController) { 
      myViewController = viewController as ViewController 
      println("Found the view controller") 
     } 
    } 
} 
संबंधित मुद्दे