【发布时间】:2014-11-05 12:07:16
【问题描述】:
我正在尝试创建我的第一个 iOS 应用
当我尝试从我的委托视图控制器访问变量时,出现此错误“在展开可选值时意外发现 nil”
我正在尝试将按下的单元格值设置为目标控制器上的标签文本
这是第一个控制器
class SearchStationViewController: UITableViewController, writeValueBackDelegate {
var selectedStation: String!
var fromStationValue: String! = "None"
override func viewDidLoad() {
super.viewDidLoad()
}
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
selectedStation = stations[indexPath.row].StationName
fromStationValue = selectedStation
let vc = SelectedStationViewController()
vc.fromStationValue = self.fromStationValue
vc.delegate = self
self.dismissViewControllerAnimated(true, completion: nil)
}
}
以及我希望更改 label.text 的目标控制器
protocol writeValueBackDelegate {
var fromStationValue: String! {get set}
}
class SelectedStationViewController: UITableViewController {
@IBOutlet weak var stationFrom: UILabel!
var delegate: writeValueBackDelegate! = nil
var fromStationValue: String! = "None"
override func viewDidLoad() {
super.viewDidLoad()
stationFrom.text = fromStationValue
}
}
【问题讨论】:
-
究竟的错误是什么?你的问题缺乏一些细节。我认为您必须从情节提要而不是直接实例化您的视图控制器,并且您的 IBOutlet 为零。
-
当我试图将标签“stationFrom”设置为从第一个视图控制器检索到的新值“fromStationValue”时,错误显示为“在展开可选值时意外发现 nil”。抱歉不清楚
-
我无法弄清楚您的视图层次结构。选择电台时是否先显示
SearchStationViewController,然后显示SelectedStationViewController?按照您现在的方式,委托/协议用于将数据从SelectedStationViewController传递到SearchStationViewController,而不是相反。
标签: ios swift delegates null optional-values