尝试更改文本值时,UILabel 总是展开为 nil

UILabel always unwrapping as nil when trying to change text value

我有一个包含运动列表的表格视图,我想为每个单元格打开相应的团队页面。在我的团队页面中,我有一个标签,它可以根据您从运动列表中按下的单元格来更改文本。我正确地从 segue 传递了字符串,我的打印行显示该字符串是正确的。但是,当我尝试设置标签文本时,出现 "unexpectedly found nil" 错误。我的标签在 IB 中正确连接并被实例化。看似简单,却一直困扰着我。

这是我的运动列表控制器 segue:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    if segue.identifier == "showTeamPage"{
        let teamViewController: TeamPage = segue.destinationViewController as! TeamPage
        teamViewController.teamSport = sport
    }


    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}

这是 TeamPage() 代码:

   import UIKit
   import Social
   import CloudKit

   class TeamPage: UITableViewController, UITableViewDelegate, UITableViewDataSource, UICollectionViewDelegate, UICollectionViewDataSource, UIAlertViewDelegate {

@IBOutlet weak var sportTitle: UILabel!

var teamSport: String!

override func viewDidLoad() {
    super.viewDidLoad()

    self.sportTitle = UILabel()

    println(teamSport)

    self.sportTitle.text = teamSport

    println(sportTitle.text)

}

我要疯了...

我认为编译器很困惑,因为您正在重新初始化标签。我的猜测是,当您调用 self.sportTitle = UILabel() 时,ARC 启动以终止 sportTitle UILabel!你通过故事板连接制作的。然后,出于某种原因,self.sportTitle.text = teamSport 尝试设置 nil 的文本(因为它已因您的上一步而被破坏)。

要解决此问题,请删除 self.sportTitle = UILabel()。你不需要那个。