2015-09-08 9 views
5

मेरे पास ViewController है Container View जिसमें TableViewController एम्बेडेड है।कंटेनर व्यू आउटलेट

अब मैं ViewController में एक्सेस करना चाहता हूं, मैं इसके लिए आउटलेट कैसे बना सकता हूं?

मैंने कंटेनर व्यू को आउटलेट के रूप में जोड़ने की कोशिश की, लेकिन मैं एम्बेडेड TableViewController तक नहीं पहुंच सकता।

enter image description here

उत्तर

11

आप एक आउटलेट सीधे क्योंकि नहीं कर सकते तालिका दृश्य एक अलग दृश्य (नियंत्रक देखें) में है, लेकिन UITableViewController उदाहरण का संदर्भ मिलने के बाद आप तालिकादृश्य तक पहुंच सकते हैं। ऐसा करने के कुछ अलग तरीके हैं।

सबसे पहले, आप अपने UIViewController सबक्लास की childViewControllers संपत्ति का उपयोग कर सकते हैं। यदि आप जानते हैं कि केवल एक ही बच्चा है तो आप इसे सीधे एक्सेस कर सकते हैं, अन्यथा आपको यह निर्धारित करने की आवश्यकता है कि सरणी के माध्यम से लूपिंग करके सही बच्चा कौन सा है।

let myTableViewController = self.childViewControllers[0] as! UITableViewController 
let theTableView = myTableViewController.tableView 

दूसरा विकल्प एम्बेड segue के दौरान UITableViewController तक पहुंचना है। यदि आप अपने स्टोरीबोर्ड में एम्बेड सेग्यू पर क्लिक करते हैं तो आप इसे किसी अन्य सिगू के साथ पहचानकर्ता दे सकते हैं। तो फिर तुम prepareForSegue को लागू करने और एम्बेडेड UITableViewController उदाहरण हड़पने कर सकते हैं -

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) { 
    if (segue.identifier == "tableviewEmbed") { 
     let myTableViewController = segue.destinationViewController as! UITableViewController 
     let theTableView = myTableViewController.tableView 
    } 
} 

व्यक्तिगत रूप से, मैं इस दूसरा दृष्टिकोण पसंद करते हैं के रूप में मुझे लगता है कि यह 'क्लीनर'

+0

दूसरा दृष्टिकोण चट्टानों है! – TalL

1

बच्चे दृश्य नियंत्रक में आउटलेट बनाएं और पहुंच यह self.childViewControllers.lastObject का उपयोग कर (यह मानते हुए आप केवल एक ही बच्चा है, अन्यथा उपयोग objectAtIndex :)

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