दिलचस्प पोस्ट
अंतिम डाली गई पंक्ति आईडी प्राप्त करें (एसक्यूएल स्टेटमेंट के साथ) स्थानीय मेवेन प्रॉक्सी रिपॉजिटरी (नेक्सस) का उपयोग करने के लिए मैं एसबीटी कैसे प्राप्त करूं? क्यों नहीं <fieldset> फ्लेक्स कंटेनर हो सकता है? C ++ कोड में कौन सी सीआई / ओ लाइब्रेरी का उपयोग किया जाना चाहिए? कैसे jQuery के साथ सभी आईडी प्राप्त करने के लिए? Xcode – अलग दृश्य से ViewController लेबल टेक्स्ट अपडेट करें प्रतिक्रियाएक्सएक्सएमएल हमेशा शून्य विंडोज बल्ल फाइल में एक और प्रोग्राम चला रहा है और बाल प्रक्रिया नहीं बना रहा है कैसे jQuery के साथ 5 सेकंड इंतजार करने के लिए? OwinStartup फायरिंग नहीं है क्यों प्रदर्शन के लिए वजन नीडि़त खराब है? वैकल्पिक? libz.so.1: साझा वस्तु फ़ाइल नहीं खोल सकता योग की गणना के बजाय दो नंबर जोड़कर उन्हें जोड़ता है जावा: थ्रेड कैसे रोकें? एसक्यूएल DATE से केवल महीना और वर्ष प्राप्त करना

अनगिनत सीग्यू के साथ डेटा पास करना

मैंने दो दृश्य नियंत्रक बनाए मैंने पहले से दूसरे से डेटा तक पहुंचने के लिए एक सेग्यू बनाया अब मैं द्वितीय दृश्य नियंत्रक से डेटा को पहले एक में देना चाहता हूं। मैं कई समान प्रश्नों के माध्यम से चला गया और मैं उनको लागू नहीं कर पा रहा हूं क्योंकि मुझे इस बात पर अभाव है कि कैसे unwinding काम करता है।

ViewController.swift

class ViewController: UIViewController { var dataRecieved: String? @IBOutlet weak var labelOne: UILabel! @IBAction func buttonOne(sender: UIButton) { performSegueWithIdentifier("viewNext", sender: self) } override func prepareForSegue(segue: (UIStoryboardSegue!), sender: AnyObject!) { var svc: viewControllerB = segue.destinationViewController as! viewControllerB svc.dataPassed = labelOne.text } } 

यह डेटा को डेटा नियंत्रक "viewControllerB" में पारित किया जाएगा कहो, अब मैं दृश्य से कुछ डेटा पास करना चाहता हूं, नियंत्रक बी को डेटा से प्राप्त करना ViewController में प्राप्त हुआ मैं ऐसा कैसे कर सकता हूं केवल प्रतिनिधि खोलना और प्रतिनिधि का उपयोग करके नहीं। मैं काफी तेज हूं, एक विस्तृत स्पष्टीकरण की सराहना करता हूं।

Solutions Collecting From Web of "अनगिनत सीग्यू के साथ डेटा पास करना"

Øyvind Hauge ने मुझे एक ही समाधान पद्धति को हराया, लेकिन जैसा कि मैंने पहले से ही एक विस्तृत विवरण के साथ शुरू कर दिया था, मैं इसे भी जोड़ दूंगा।


मान लें कि आपके दो दृश्य नियंत्रकों का नाम निम्न है:

  • मास्टर / प्रवेश बिंदु: (vcA)
  • माध्यमिक दृश्य: व्यू (vcB)

आपने (vcA) -> (vcB) जैसा आपने उदाहरण में किया है

 /* in ViewController.swift */ // ... // segue ViewController -> ViewControllerB override func prepareForSegue(segue: (UIStoryboardSegue!), sender: AnyObject!) { if segue.identifier == "viewNext" { let viewControllerB = segue.destinationViewController as! ViewControllerB viewControllerB.dataPassed = labelOne.text } } 

अगले कुछ हद तक मुश्किल कदम यह है कि, इस पद्धति का उपयोग करते हुए, (vcA) के स्रोत के रूप में (vcA) से डेटा वापस करने के लिए इस्तेमाल किया गया (vcB) भी (vcA) से जोड़ा जाता है, जैसा कि संभवतः उम्मीद की जानी चाहिए, (vcB) के स्रोत में जोड़ा गया है)

 /* in ViewController.swift */ // ... // segue ViewControllerB -> ViewController @IBAction func unwindToThisView(sender: UIStoryboardSegue) { if let sourceViewController = sender.sourceViewController as? ViewControllerB { dataRecieved = sourceViewController.dataPassed } } 

इसके बाद आप जुड़ जाते हैं, (vcB) में एक बटन (vcA) से मैन्युअल Exit (vcA) माध्यम से इस कार्य को खोलना (vcB) :

यहां छवि विवरण दर्ज करें

नीचे से (vcA) से (vcA) पाठ पास करने का एक पूरा उदाहरण निम्नानुसार है; (संभवतः) उस पाठ को एक (vcA) संशोधित कर रहा है, अंत में (संभवतः) संशोधित पाठ (vcA)


(vcA) स्रोत:

 /* ViewController.swift: Initial view controller */ import UIKit class ViewController: UIViewController { var dataRecieved: String? { willSet { labelOne.text = newValue } } @IBOutlet weak var labelOne: UILabel! @IBAction func buttonOne(sender: UIButton) { performSegueWithIdentifier("viewNext", sender: self) } // set default labelOne text override func viewDidLoad() { super.viewDidLoad() labelOne.text = "Default passed data" } // segue ViewController -> ViewControllerB override func prepareForSegue(segue: (UIStoryboardSegue!), sender: AnyObject!) { if segue.identifier == "viewNext" { let viewControllerB = segue.destinationViewController as! ViewControllerB viewControllerB.dataPassed = labelOne.text } } // segue ViewControllerB -> ViewController @IBAction func unwindToThisView(sender: UIStoryboardSegue) { if let sourceViewController = sender.sourceViewController as? ViewControllerB { dataRecieved = sourceViewController.dataPassed } } } 

(vcB) स्रोत (ध्यान दें कि (vcB) प्रतिनिधि यहाँ केवल " dataPassed " के लिए dataPassed संपत्ति के मूल्य को dataPassed हैं, जो कि वापस (vcA) को वापस कर दिया जाएगा और dataRecieved को उत्तरार्द्ध की dataRecieved संपत्ति को सौंपा जाएगा)

 /* ViewControllerB.swift */ import UIKit class ViewControllerB: UIViewController, UITextFieldDelegate { var dataPassed : String? @IBOutlet weak var textField: UITextField! // set default textField text to the data passed from previous view. override func viewDidLoad() { super.viewDidLoad() textField.text = dataPassed // Handle the user input in the text field through delegate callbacks textField.delegate = self } // UITextFieldDelegate func textFieldShouldReturn(textField: UITextField) -> Bool { // User finished typing (hit return): hide the keyboard. textField.resignFirstResponder() return true } func textFieldDidEndEditing(textField: UITextField) { dataPassed = textField.text } } 

उदाहरण निष्पादन:

यहां छवि विवरण दर्ज करें

ऐसा मैं कैसे करूँगा:

  1. दृश्य नियंत्रक 1 में एक आउटलेट बनाएँ, इस तरह:

     @IBAction func unwindToViewController1(segue: UIStoryboardSegue) { let foo = segue.sourceViewController.foo // TODO: Use foo in view controller 1 } 
  2. व्यू नियंत्रक 2 (आप जिस वीसी से अनलिंक रहे हैं) कनेक्ट करें जैसा कि नीचे दिखाया गया है। 'एक्सीट' में vc2 में पीले सर्कल में खींचें दृश्य नियंत्रक 1 से IBAction को पॉप अप करना चाहिए इसे चुनें यहां छवि विवरण दर्ज करें

  3. अब, जब भी आप दृश्य नियंत्रक 2 से unwindToViewController1: , तो unwindToViewController1: 1 unwindToViewController1: दृश्य नियंत्रक 1 को देखने के लिए विधि मिलेगा।

  4. यह वह जगह है जहाँ आप दृश्य नियंत्रक 2 से अपनी इच्छित संपत्ति को पुनः प्राप्त करेंगे। नोट करें कि आपको सही संपत्ति प्राप्त करने के लिए अपने कस्टम दृश्य नियंत्रक उपवर्ग को segue.sourceViewController डालना segue.sourceViewController है।