向下滚动时选择器视图崩溃
Picker View crash when scroll down
我正在构建一个 "Date" UiPickerView
以便能够自定义字体大小、类型和颜色。
请看我的代码。
{
@IBOutlet weak var dataInicio: UIPickerView!
var dataDia1: NSMutableArray!
var dataMes1: NSArray!
var dataAno1: NSMutableArray!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.dataDia1 = NSMutableArray()
for dia in 1...31
{
dataDia1.addObject("\(dia)")
}
self.dataMes1 = NSArray(objects: "Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro")
self.dataAno1 = NSMutableArray()
for ano in 1970...2016
{
dataAno1.addObject("\(ano)")
}
}
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int
{
return 3
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int
{
if (component == 0)
{
return dataDia1.count
}
if (component == 1)
{
return dataMes1.count
}
else
{
return dataAno1.count
}
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?
{
var componentStr = dataDia1[row]
if(component == 0)
{
return componentStr as? String
}
if(component == 1)
{
componentStr = (dataMes1[row] as? String)!
return componentStr as? String
}
else
{
componentStr = (dataAno1[row] as? String)!
return componentStr as? String
}
}
}
构建成功,但是当我向下滚动年份时,当数组中的组件超过 27 个时它会崩溃。
我正在发起这个,我已经在网上四处寻找,但没有找到任何东西。 :(
我做错了什么?
无论请求哪个组件,您都调用 var componentStr = dataDia1[row]
。将您的代码更改为:
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?
{
if(component == 0)
{
var componentStr = dataDia1[row]
return componentStr as? String
}
else if(component == 1)
{
var componentStr = (dataMes1[row] as? String)!
return componentStr as? String
}
else
{
var componentStr = (dataAno1[row] as? String)!
return componentStr as? String
}
}
还要注意else if
的使用。
我正在构建一个 "Date" UiPickerView
以便能够自定义字体大小、类型和颜色。
请看我的代码。
{
@IBOutlet weak var dataInicio: UIPickerView!
var dataDia1: NSMutableArray!
var dataMes1: NSArray!
var dataAno1: NSMutableArray!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.dataDia1 = NSMutableArray()
for dia in 1...31
{
dataDia1.addObject("\(dia)")
}
self.dataMes1 = NSArray(objects: "Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro")
self.dataAno1 = NSMutableArray()
for ano in 1970...2016
{
dataAno1.addObject("\(ano)")
}
}
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int
{
return 3
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int
{
if (component == 0)
{
return dataDia1.count
}
if (component == 1)
{
return dataMes1.count
}
else
{
return dataAno1.count
}
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?
{
var componentStr = dataDia1[row]
if(component == 0)
{
return componentStr as? String
}
if(component == 1)
{
componentStr = (dataMes1[row] as? String)!
return componentStr as? String
}
else
{
componentStr = (dataAno1[row] as? String)!
return componentStr as? String
}
}
}
构建成功,但是当我向下滚动年份时,当数组中的组件超过 27 个时它会崩溃。
我正在发起这个,我已经在网上四处寻找,但没有找到任何东西。 :(
我做错了什么?
无论请求哪个组件,您都调用 var componentStr = dataDia1[row]
。将您的代码更改为:
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?
{
if(component == 0)
{
var componentStr = dataDia1[row]
return componentStr as? String
}
else if(component == 1)
{
var componentStr = (dataMes1[row] as? String)!
return componentStr as? String
}
else
{
var componentStr = (dataAno1[row] as? String)!
return componentStr as? String
}
}
还要注意else if
的使用。