【发布时间】:2017-11-12 22:19:26
【问题描述】:
也许有些愚蠢,但我试图简单地从 tableviewController 移动到 viewController 不传递任何数据只是一个简单的移动使用
@IBAction func requestPanel(_ sender: Any) {
performSegue(withIdentifier: "sendMail", sender: AnyObject)
}
然后我在准备 segue 函数时遇到错误。
但这与我的其他转场有什么关系?
我知道,由于没有数据,该 segue 会遇到麻烦。
正如您在此处看到的,segue 高于为 segue 做准备。
@IBAction func requestPanel(_ sender: Any) {
self.performSegue(withIdentifier: "sendMail", sender: AnyObject.self)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
var indexPath: IndexPath = self.tableView.indexPathForSelectedRow!
let desti = segue.destination as! DeviceDetailTableViewController
let selectedRecord = onlineDevices[indexPath.row]
let panelWidth = selectedRecord.object(forKey: "panelwidth") as? String
let panelHight = selectedRecord.object(forKey: "panelhight") as? String
let panelPitch = selectedRecord.object(forKey: "panelpitch") as? String
let panelPower = selectedRecord.object(forKey: "panelpower") as? String
let panelWeight = selectedRecord.object(forKey: "panelweight") as? String
let panelMaker = selectedRecord.object(forKey: "maker") as? String
let panelModel = selectedRecord.object(forKey: "model") as? String
desti.pawidth = panelWidth!
desti.pahight = panelHight!
desti.papitch = panelPitch!
desti.papower = panelPower!
desti.weight = panelWeight!
desti.maker = panelMaker!
desti.model = panelModel!
}
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return onlineDevices.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "DeviceCell", for: indexPath)
// Configure the cell...
let noteRecord: CKRecord = onlineDevices[(indexPath as IndexPath).row]
cell.textLabel?.text = noteRecord.value(forKey: "maker") as? String
cell.detailTextLabel?.text = noteRecord.value(forKey: "model") as? String
return cell
}
}
【问题讨论】:
-
每当你调用 perform segue 方法时,它都会创建一个 segue 和你想要进行 segue 的新视图控制器。如果这样做了,系统将调用 prepare 让您有机会将数据传递给下一个视图控制器。由于您在此处丢失数据并强制解包,因此在尝试转场时会崩溃。
-
您的 segue 是通过按钮触发的,而不是通过选择行来触发的,因此请在尝试获取所选行之前检查您的 segue 标识符。
-
不要不显示代码图片。显示代码。
-
@vacawama 是的,segue 是从 UIBarbutton 触发的,女巫是正确的,因为我不想带来任何数据。
-
@matt 好的,这是代码
标签: ios swift uitableview uistoryboardsegue