我有一个包含运动清单的表格视图,我想为每个单元打开相应的团队页面。在我的团队页面中,我有一个标签,它可以根据您从运动列表中按下的单元格来更改文本。我正确地从segue中传递了字符串,并且我的打印行显示该字符串正确。但是,当我尝试设置标签文本时,出现“意外找到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()。不用了

09-05 21:29