2016-12-28 56 views
0

iOS/Swift新手。我試圖遷移的項目(即簡單地從通過NSData的init()方法的URL抓取內容)從斯威夫特2斯威夫特3,我遇到了幾個問題:UILabel.text返回零Swift 3

  1. 我有一個prepareForSegue一個ViewController。 segue本身工作正常,但是我無法從原始控制器中將文本從UILabel中拉出併發送到目標控制器。出於某種原因,目標VC UIlabel仍顯示默認值。 Segue公司代碼:

    if let identifier = segue.identifier{ 
          if identifier == "showUserDetailSegue"{ 
           if let detailsViewController = segue.destination as? DetailsViewController, 
            let cell = sender as? UserInfoTableViewCell, 
            let text = cell.textLabel?.text{ 
            detailsViewController.text = text 
            } 
           } 
         } 
    

detailsViewController.text是其採用了didSet屬性公共變種。

DestinationVC代碼:

var text: String?{ 
     didSet{ 
      updateUI() 
     } 
    } 


private func updateUI(){ 
     self.detailsTextView.text = text 
    } 
    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


    @IBOutlet weak var detailsTextView: UILabel! 

GET請求URL的2.One有一定的空間之間。例如,如果我們採用如下示例URL:http://www.omdbapi.com/?t=Game%20of%20Thrones&Season=1,則異步調用會因「URL無效」而失敗。我們應該運行某種編碼嗎?

任何提示,提示是非常感謝。

感謝。

+0

您是否有任何代碼可以更改標籤的文字? – luk2302

+0

是的,我應該用目標VC更新問題 – user2511882

+0

添加調試語句,是否內部複雜'if let'甚至達到? – luk2302

回答

2

是你的UILabelDetailsViewController unwrapped可選?有可能在這一點上它仍然是nil。您應該配置您的意見的最早時刻是viewDidLoad

只需刪除didSet處理程序,並將UILabel的文本設置爲self.text,viewDidLoad

+0

已經嘗試過..但是什麼都沒有..我添加了目標代碼VC – user2511882

+0

你確定行'detailsViewController.text = text'實際執行了嗎?也許'if let'語句中的一個定義評估爲零。 – crizzis

+0

這似乎是最後一個let語句沒有返回文本..不知道爲什麼...因爲我可以看到屏幕上的列表 – user2511882