【发布时间】:2020-12-26 18:57:14
【问题描述】:
我有两个表格视图,它们根据所选单元格从数组中提取的数据填充。我引入了结构,最初只是使用字符串数组,我试图提取正确的数据并填充正确的字段他们。所以我有这个结构:
struct DetailView {
var detailTitle : String
//var equipmentImage = [UIImageView?]()
var serN : String
var dc : String //deck Code
var an : String //area name
var sn : String //Space number
var manuf : String
var qty : String
init(detailTitle:String,dc:String,serN:String,an:String,sn:String,manuf:String,qty:String){
self.detailTitle = detailTitle
self.dc = dc
self.an = an
self.serN = serN
self.sn = sn
self.manuf = manuf
self.qty = qty
//
}
}
我有这个数组:
//we are adding elements on the detailView structure
var thirdArray : [DetailView]= []
我填充它:
thirdArray = thirdArray = [[
DetailView(detailTitle: "A", dc: "", serN: "Info required", an: "Area Name required", sn: "Space Number Required", manuf: "APC", qty: "2")],
[DetailView(detailTitle: "B", dc: "", serN: "Info required", an: "Area Name required", sn: "Space Number Required", manuf: "Apple", qty: "12"),
DetailView(detailTitle: "D", dc: "", serN: "Info required", an: "Area Name required", sn: "Space Number Required", manuf: "Apple", qty: "7"),
DetailView(detailTitle: "E", dc: "", serN: "Info required", an: "Area Name required", sn: "Space Number Required", manuf: "Apple", qty: "1")],
[DetailView(detailTitle: "F", dc: "", serN: "Info required", an: "Area Name required", sn: "Space Number Required", manuf: "Autonomic", qty: "1")]]
然后我在填充它们的地方执行一个 segue:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let row = self.tableView?.indexPathForSelectedRow?.row ?? 0
let destViewController = segue.destination as! SecondTableViewController
var detailArray : [DetailView]
detailArray = thirdArray
destViewController.detailVcArray = detailArray
}
在我的第二个表格视图中:
var detailVcArray : [DetailView] = []
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let destViewController = segue.destination as! DetailsViewController
let row = self.tableView?.indexPathForSelectedRow?.row ?? 0
var lastArray : [DetailView]
lastArray = detailVcArray
destViewController.displayDetail = lastArray[row]
//here I get this error "Thread 1: Fatal error: Index out of range"
}
最后在我的 DetailsViewController 上,我想用我的结构中的 dc 数据填充 dc textField,用 detailTitle 等填充 textView ..但是应用程序崩溃了。
var displayDetail : DetailView?
@IBOutlet weak var textView: UITextView!
@IBOutlet weak var serN: UITextField!
@IBOutlet weak var dc: UITextField!
@IBOutlet weak var an: UITextField!
@IBOutlet weak var sn: UITextField!
@IBOutlet weak var manuf: UITextField!
@IBOutlet weak var qty: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
textView.text = displayDetail?.detailTitle
dc.text = displayDetail?.dc
serN.text = displayDetail?.serN
an.text = displayDetail?.an
sn.text = displayDetail?.sn
manuf.text = displayDetail?.manuf
qty.text = displayDetail?.qty
updateTextView()
}
我收到此错误“线程 1:致命错误:索引超出范围”,当我从上一个电视中选择一个单元格并尝试在上一个 VC 上显示数据时,应用程序崩溃。
【问题讨论】:
-
我不明白。你说的是
destViewController.firstString = detailVcArray[row]; destViewController.secondSting = detailVcArray[row]。所以他们当然是一样的。有什么问题?
标签: arrays swift struct viewcontroller