ios - 线程 1:致命错误:swift 4 上的索引超出范围
问题描述
我的代码有一个关于线程 1 致命错误的问题。我尝试在一个视图控制器中创建 2 个选择器。但是错误不断出现。当我试图在我的手机上运行时,一切都很好,直到这个页面(选择器无法移动)。它在底部的第 6 行(返回主题 [行])上显示错误)
这是我的代码:
Import UIKit
class ThirdViewController: UIViewController, UIPickerViewDelegate,
UIPickerViewDataSource {
@IBOutlet weak var classPickerView: UIPickerView!
@IBOutlet weak var subjectPickerView: UIPickerView!
@IBOutlet weak var nextButton: UIButton!
let subclass = ["AA234", "ASA231", "AA9292", "AAA839", "AA5682", "AAA789"]
let subject = ["Introduction to Database","Introduction to Programming","Mathematics","Multimedia"]
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func buttonPressed(_ sender: Any) {
let picker = UIImagePickerController()
picker.delegate = (self as! UIImagePickerControllerDelegate & UINavigationControllerDelegate)
//select row first
let selectedRow1 = classPickerView.selectedRow(inComponent: 0)
let selectedRow2 = subjectPickerView.selectedRow(inComponent: 0)
let selectedClass = subclass [selectedRow1]
let selectedSubClass = subject [selectedRow2]
let messageToShow = "Class \(selectedClass) with the subject \(selectedSubClass)"
// insert messageToShow in message to appear what u selected
let actionSheet = UIAlertController (title: "Please Confirm Before Scan", message: messageToShow, preferredStyle: .alert)
let okAction = UIAlertAction (title: "Proceed to Scan", style: .default, handler: nil) //{action in
//picker.sourceType = .camera})
let cancelAction = UIAlertAction (title: "Cancel", style: .cancel, handler: nil)
actionSheet.addAction(okAction)
actionSheet.addAction(cancelAction)
present(actionSheet, animated: true, completion: nil)
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 2
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if (pickerView.tag == 1) {
return subject.count
}
else {
return subclass.count
}
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if component == 0 {
return subject[row]
}
else {
return subclass[row]
}
}
}
解决方案
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if (component == 0) {
return subject.count
}
else {
return subclass.count
}
}
更改 numberOfRowsInComponent 代码如上
推荐阅读
- flutter - 可以在 controller.stopImageStream 之后重新启动 controller.StartImageStream() 还是有办法暂停
- php - 如何从多维数组中获取和操作值并按行显示它们
- python - 关于如何为 lstm 塑造数据的建议
- python - python-datetime 输出 -1 天而不是所需的输出
- ruby-on-rails - 如何使用 rails 和 postgres 改进查询
- neo4j - 如何在密码查询中间加入 2 个 MATCH 输出
- db2-luw - 在 db2 luw 中收集单个分区的统计信息
- android - 使用 Gitlab 作业失败
- firebase - 在 Google Analytics 中测量量化指标
- spring - 如何在以下情况下设计 Spring Boot JPA 模型类?