UILabel.text返回nil Swift 3

时间:2016-12-28 18:50:04

标签: swift3 uilabel segue

iOS / Swift新手。我正在尝试将一个项目(只是通过NSData init()方法从URL中获取内容)从Swift 2迁移到Swift 3,我遇到了几个问题:

  1. 我在ViewController中有一个prepareForSegue。 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
                        }  
                    }
            }
    
  2. 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!
    

    2.我的GET请求网址之间有一些空格。例如,如果我们采用例如:http://www.omdbapi.com/?t=Game%20of%20Thrones&Season=1的示例网址,则对此的异步调用将继续失败,并且"网址无效"。我们应该在这上面运行某种编码吗?

    非常感谢任何提示,提示。

    感谢。

1 个答案:

答案 0 :(得分:2)

File docDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS); if (!docDir.exists()) { if(docDir.mkdirs()) { File directory = new File(docDir,"test"); } else { // Unable to create document directory. check Run time permissions } } UILabel是否为未打开的可选内容?那时仍有DetailsViewController的可能性。您应该配置视图的最早时刻是nil

只需删除viewDidLoad处理程序,然后将didSet的文字设置为UILabel中的self.text