尝试更改文本值时,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()
。你不需要那个。
我有一个包含运动列表的表格视图,我想为每个单元格打开相应的团队页面。在我的团队页面中,我有一个标签,它可以根据您从运动列表中按下的单元格来更改文本。我正确地从 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()
。你不需要那个。