2016-12-28 9 views
0

iOS/Swiftの新機能です。私はprepareForSegue内を持ってUILabel.textからnil Swift 3が返されます

  1. :私はスウィフト2からスウィフト3に(単にのNSDataのinit()メソッドを介したURLからコンテンツをフェッチする)プロジェクトを移行しようとしていると私は、問題のカップルに実行していますViewController。セグ自体はうまく動作しますが、元のコントローラーからUILabelのテキストを引き出して宛先コントローラーに送信することはできません。なんらかの理由で、宛先VC UIlabelには依然としてデフォルト値が表示されます。 セグエコード:

    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.textdidSetプロパティを使用してプロパティpublic varです。

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! 

2.One私GETリクエストURLのは、間にスペースをいくつか持っています。たとえば、http://www.omdbapi.com/?t=Game%20of%20Thrones&Season=1のようなサンプルURLを取得した場合、この非同期呼び出しは「URLが無効です」というエラーで失敗し続けます。これについて何らかのエンコーディングを実行するはずですか?

ヒント、ヒントは非常に高く評価されています。

ありがとうございました。

+0

ラベルのテキストを変更するためのコードはありますか? – luk2302

+0

はい、どうすればいいですか?質問をdestinationVC – user2511882

+0

で更新します。デバッグ文を追加します。 – luk2302

答えて

2

UILabelDetailsViewControllerですか?その時点でまだnilである可能性があります。ビューを構成する初期の段階は、viewDidLoadです。

didSetハンドラを削除してのテキストをself.textviewDidLoadに設定するだけです。

+0

これを試しました..まだ何も..私はdestinationVCのコードを追加しました – user2511882

+0

'detailsViewController.text = text'という行が実際に実行されたことを確認しましたか?おそらく 'if let'ステートメントの定義の1つがnilと評価されます。 – crizzis

+0

letステートメントがテキストを返していないのは最後のようですが...理由は分かりません。なぜなら私は画面上のリストを見ることができるからです。 – user2511882

関連する問題