【发布时间】:2020-01-05 03:09:29
【问题描述】:
我有一个名为“hydrogenSegue”的segue,从“hydrogenBoxButton”到“Hydrogen”视图控制器。但是,我还想实现一个表格视图,以便我可以搜索一个元素。我尝试编写代码,因此当单击单元格时,它将转到元素的视图。我在这里以氢气为例。
在我的主 ViewController.swift 文件中,我有这个来传输数据:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
//If identifier equals the hydrogen element go to the elements Swift file
if segue.identifier == "hydrogenSegue" {
let hydrogenAtomicNumberPassing = segue.destination as! hydrogenViewController
hydrogenAtomicNumberPassing.hydrogenAtomicNumberPassed = hydrogenAtomicNumber
let hydrogenAtomicMassPassing = segue.destination as! hydrogenViewController
hydrogenAtomicMassPassing.hydrogenAtomicMassPassed = hydrogenAtomicMass
}
}
在 hydroViewController.swift 文件中我有这个:
import UIKit
class hydrogenViewController: UIViewController {
var hydrogenAtomicNumberPassed: Int!
var hydrogenAtomicMassPassed: Float!
@IBOutlet weak var hydrogenInformationLabel: UILabel!
@IBOutlet weak var hydrogenAtomicNumberLabel: UILabel!
@IBOutlet weak var hydrogenAtomicMassLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
//Setting the background color
self.view.backgroundColor = UIColor.gray
//Converting hydrogen's atomic number from an Int to a String
let hydrogenAtomicNumberString = String("\(hydrogenAtomicNumberPassed!)")
hydrogenAtomicNumberLabel.text = "Atomic Number: \(hydrogenAtomicNumberString)"
//Converting hydrogen's atomic mass from a Float to a String
let hydrogenAtomicMassString = String("\(hydrogenAtomicMassPassed!)")
hydrogenAtomicMassLabel.text = "Atomic Mass: \(hydrogenAtomicMassString)"
}
}
我在以下位置收到错误:
let hydrogenAtomicNumberString = String("\(hydrogenAtomicNumberPassed!)")
如果我只修复那条线,我假设它也会发生在这条线上:
let hydrogenAtomicMassString = String("\(hydrogenAtomicMassPassed!)")
我的“searchViewController”(用于表格视图的 .swift 文件)中有这段代码:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("row selected : \(indexPath.row)")
if indexPath.row == 0 {
let hydrogenSearchSegue = UIStoryboard(name:"Main",
bundle:nil).instantiateViewController(withIdentifier: "hydrogenView") as!
hydrogenViewController
self.navigationController?.pushViewController(hydrogenSearchSegue,
animated:true)
}
}
当我点击表格视图中的“Hydrogen”单元格时,它会崩溃到这个错误:
当我点击这张图片中的“H”按钮时,它会将我带到氢视图控制器:
Image of the Hydrogen Button in the simulator (Top Left)
Image of the Hydrogen View Controller
我希望氢电池像按钮一样切换到氢视图控制器。
当早先出现同样的问题时,我只是在故事板中遇到了 segue 名称的问题。但是,由于表格视图中没有可见的 segue,我不知道如何解决这个问题。
我试过了:
performSegue(withIdentifier: "hydrogenSegue", sender: nil)
我在想我可以将按钮中的“hydrogenSegue”重用到视图控制器,但我得到了一个 SIGABRT 错误。它只是说没有名称为“hydrogenSegue”的segue。如果我能以某种方式重用该转场,那将是最好的,因为一切都已经连接,但我现在发现“searchViewController”无法识别转场。感谢您提供任何帮助,我的主要目标是让单击的单元格移动到元素的指定视图。我试图提供尽可能多的信息,但不会太长,如果需要更多信息,我应该能够提供。
【问题讨论】:
标签: ios swift segue optional forced-unwrapping