【发布时间】:2015-01-28 23:53:33
【问题描述】:
我有一个拆分视图控制器,表格视图的单元格有一个标签栏的 segue,它的视图控制器有一个 segue
问题是我给destinationViewController传数据的时候,数据传成功了,但是这个view里面的label outlet是nil。
这是 TableViewController 中的 prepareForSegue 方法
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
println("segue happened")
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
if let indexPath = self.tableView.indexPathForSelectedRow() {
let patient = patients[indexPath.row]
let controller = (segue.destinationViewController as UITabBarController).viewControllers![0] as personalViewController
controller.patient = patient
}
}
这是personalViewController(第一个标签)
import UIKit
class personalViewController: UIViewController {
@IBOutlet weak var lblName: UILabel!
@IBAction func btnButton(sender: AnyObject) {
let temp = self.patient
self.patient = temp
}
var patient : Patient? {
didSet {
println("patient didSet")
self.setData()
}
}
[...]
func setData() {
println( self.lblName == nil ) // true when selecting an element in table view but false if I set data using btnButton button
println( self.patient!.name ) // always set correctly
if lblName != nil { // had to add this line to prevent crash
lblName.text = patient!.name
}
// The previous line crashes when using table view for navigation
// it does not crash when clicking a button (btnButton)
}
}
每当我在患者的didSet 中使用插座 lblName 时(通过单击表格单元格),我都会得到 nil。但是,如果我创建一个在该视图中设置 lblName 的按钮,它就可以工作。
我做错了什么?
【问题讨论】:
标签: xcode uitableview segue uitabbar