gpt4 book ai didi

ios - 线程 1 : Fatal error: Index out of range UIPickerView

转载 作者:行者123 更新时间:2023-11-30 11:51:35 25 4
gpt4 key购买 nike

我们制作了一个带有选择器 View 的电子邮件函数,该 View 将其变量写入标签中。这可行,现在我们添加了第二个选择器 View ,对您应该能够发送到该电子邮件地址的文章执行相同的操作。

基本上它可以工作,但是如果每个选择器 View 中的值的数量不同,它会在某个时候崩溃并出现上述错误。

这是代码:

import UIKit
import MessageUI

class ViewController: UIViewController, MFMailComposeViewControllerDelegate, UIPickerViewDataSource, UIPickerViewDelegate {
@IBOutlet weak var techniker: UIPickerView!
@IBOutlet weak var artikel: UIPickerView!

@IBOutlet weak var label: UILabel!
@IBOutlet weak var label1: UILabel!

var email = ["email1@email.ch", "email2@email.ch", "email3@email.ch", "email4@email.ch", "email5@email.ch"]

var materialien = ["article", "article", "article", "article", "article", "article"]

func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
var countrows : Int
if pickerView == artikel {
countrows = materialien.count
}
else {
countrows = materialien.count
}
return countrows
}

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if pickerView == techniker {
return email[row]
}; if pickerView == artikel {
return materialien[row]
} else {
return ""
}
}

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if pickerView == techniker {
label.text = email[row]
}; if pickerView == artikel {
label1.text = materialien[row]
}
}
}

最佳答案

您的 numberOfRowsInComponent 返回的 materialien 计数为 6。因此,如果您尝试显示 email[row] (电子邮件有5 项)那么这将超出范围。

我怀疑您应该将 numberOfRowsInComponant 中的部分更改为

if pickerView == artikel {
countrows = email.count
} else {
countrows = materialien.count
}

关于ios - 线程 1 : Fatal error: Index out of range UIPickerView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48284056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com