2015-03-03 9 views
11

मैं एक खाता पृष्ठ के साथ एक ऐप बनाने में व्यस्त हूं। मैं चाहता हूं कि उपयोगकर्ता उस पृष्ठ के माध्यम से लॉगऑन कर सकें और जैसे ही उन्होंने सफलतापूर्वक ऐसा किया है कि पृष्ठ मानक संदेश के बजाए अपनी खाता जानकारी प्रदर्शित करने के लिए पुनः लोड करता है, जिसमें यह बताता है कि उन्हें पृष्ठ का उपयोग करने के लिए लॉगऑन करना है।स्विफ्ट में रीलोड/अपडेट देखें

हालांकि जब मैं खाता पृष्ठ पर वापस लॉग ऑन करने से दृश्य पृष्ठ पर वापस भेजता हूं तो वास्तव में अपडेट नहीं होता है। इसलिए मैं सोच रहा हूं कि कुछ बटन दबाए जाने के बाद मैं दृश्य को फिर से लोड नहीं कर सकता हूं, जो कि उपयोगकर्ता को लॉग ऑन किया गया है या नहीं, फिर से गीला जांच सकता है और तदनुसार सौदा कर सकता है।

उत्तर

12

यदि आप नये नोट्स ट्रिगर करना चाहते हैं या सिर्फ ड्राइंग वहाँ setNeedsLayout और setNeedsDisplay

है कस्टम डेटा को फिर से लोड करने के लिए (आईओएस पर)


तो एक बार पुनः लोड कर कोई अंतर्निहित विधि नहीं है और एक रीलोड के अंदर - कॉल सेटNeedsDisplay

import UIKit 

protocol MyViewDelegate { 
    func viewString() -> String; 
} 

class MyView : UIView { 
    var myViewDelegate : MyViewDelegate? 
    private var str : String? 

    func reloadData() { 
     if myViewDelegate != nil { 
      str = myViewDelegate!.viewString() 
     } 
     self.setNeedsDisplay() 
    } 

    override func drawRect(rect: CGRect) { 
     UIColor.whiteColor().setFill() 
     UIRectFill(self.bounds) 
     if str != nil { 
      let ns = str! as NSString 
      ns.drawInRect(self.bounds, withAttributes: [NSForegroundColorAttributeName: UIColor.blueColor(), NSFontAttributeName: UIFont.systemFontOfSize(10)]) 
     } 
    } 
} 


class ViewController: UIViewController, MyViewDelegate { 
    func viewString() -> String { 
     return "blabla" 
    } 

    var v : MyView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     v = MyView(frame: self.view.bounds) 
     self.view.addSubview(v) 

     v.myViewDelegate = self; 
    } 

    override func viewWillAppear(animated: Bool) { 
     v.reloadData() 
    } 
} 
+1

आपको लगता है क्योंकि मैं पूरी तरह से समझ में नहीं आता तो आप इस के साथ क्या मतलब है कि तुम मुझे एक उदाहरण दिखा सकता है। –

+0

मैंने एक छोटा उदाहरण –

+0

प्रदान करने का प्रयास किया धन्यवाद, इससे बहुत मदद मिली और मुझे अब यह काम मिल गया! –

-1

स्विफ्ट वास्तव में स्वयं को उन्नत कर चुका है और कई लोगों के लिए यदि वे नहीं जानते हैं तो हम कोड के केवल एक साधारण रेखा के साथ पूरे दृश्य को रीफ्रेश कर सकते हैं।

viewWillAppear(true)

+0

मैं अब कुछ समय के लिए स्विफ्ट के साथ खेलने में सक्षम नहीं हूं, लेकिन फिर भी, मुझे पूरा यकीन है कि यह तब तक काम नहीं करेगा जब तक आप दृश्य में सभी ताज़ा तर्क नहीं डालते, विल्लएपियर फ़ंक्शन, जिस स्थिति में आप भी हो सकते हैं एक अलग कार्य करें और उसे कॉल करें। –

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