首页 > 解决方案 > 线程 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]
    }
 }

}

标签: iosswift

解决方案


func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
     if (component == 0) {
        return subject.count
    }
    else {
        return subclass.count
    }
}

更改 numberOfRowsInComponent 代码如上


推荐阅读