簡體   English   中英

未調用 UITabViewController 上的項目的 viewDidLoad

[英]viewDidLoad not getting called for item on UITabViewController

單擊按鈕,通過 segue 流程轉到 UITabViewController。

            self.performSegueWithIdentifier(self.gotoResult, sender: nil)
   let myUrl = NSURL(string: "XXXXXXXX");
        let request = NSMutableURLRequest(URL:myUrl!);
        request.HTTPMethod = "POST";
        // Compose a query string

        resultVar.city = cityText.text
        resultVar.state = streetText.text

        let postString = "streetaddr=\(streetText.text)&city=\(cityText.text)&state=\(stateVal)&degree=\(degreeVal)";

        request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding);

        let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
            data, response, error in

            if error != nil
            {
                print("error= \(error)")
                return
            }
            // You can print out response object
            print("response = \(response)")

            // Print out response body
            let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
            print("responseString = \(responseString)")


            do {
                    resultVar.myJSON = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary
                } catch let error2 as NSError? {
                        print("error 2 \(error2)")
            }

        }

            task.resume()

有一個包含三個項目的 UITabViewController。 當初始視圖被加載(item1)時,viewDidLoad 沒有被調用。 現在我在 viewDidAppear 中添加了相同的代碼,當我點擊不同的選項卡並返回 item1 時,字段被填充。 但我希望它僅在 segue 之后處理初始加載。 我錯過了什么?

Item1的ViewdidLoad

  override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.

        print("in here CityViewController")

        if let parseJSON = resultVar.myJSON {
            // Now we can access value of elements by its key
            var weather_condition = parseJSON["weather_condition"] as! String
            print("weather_condition: \(weather_condition)")

            weatherconditionLbl.text = weather_condition
        }

當我切換標簽時調用的代碼:

 override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated)


        print("in here CityViewController1")

        if let parseJSON = resultVar.myJSON {
            // Now we can access value of elements by its key
            var weather_condition = parseJSON["weather_condition"] as! String
            print("weather_condition: \(weather_condition)")


            weatherconditionLbl.text = weather_condition + "in " + resultVar.city+","+resultVar.state


        }

    }

所以當我切換標簽時,代碼 viewdidload 沒有被調用,而 viewDidAppear 被調用。

網絡請求將比渲染下一個場景慢,因此“parseJSON”不存在。 您需要使用來自網絡請求的回調來刷新圖形。 為此,我建議您在每次需要刷新其內容時(由您決定)調用來自“Item 1”的網絡請求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM