iOS 中的 UIPickerView 出现问题
Having trouble with a UIPickerView in iOS
我有一个带有 UIPickerView
的应用程序,只要选择了选择器视图的某一行,它下方的 table 视图就会更新相关信息。我的问题是,无论何时首次打开应用程序,table 视图都是空的,即使默认情况下选择器视图的第一行是 highlighted/selected。我必须向下滚动然后返回到第一行,以便将其注册为真正选中的,并使 table 视图正确更新。
有没有办法让第一行自动被选中,这样我就不必每次都向下滚动并返回?我知道有一个 selectRow()
函数,但它不起作用。它只是做同样的事情。换句话说,选择了 "looks" 行,但它实际上并没有那样注册。有谁知道这是不是就是这样,或者有办法绕过它吗?
编辑:这是我的 didSelectRow
选择器视图代码:
func pickerView(_ pickerView:UIPickerView, didSelectRow row:Int, inComponent component:Int)
{
let currentState = abbvsList[statePicker.selectedRow(inComponent: 0)]
parser = XMLParser(contentsOf:(NSURL(string:"http://alerts.weather.gov/cap/\(currentState).php?x=0") as! URL))!
alerts = []
exps = []
sev = []
summ = []
eff = []
urg = []
cert = []
link = []
latList = []
longList = []
parser.delegate = self
parser.parse()
alertsTable.reloadData()
if(alerts.isEmpty) {
alertsTable.isHidden = true
}
else {
alertsTable.isHidden = false
}
}
加载数据的初始方法,尝试在viewDidAppear
或viewDidLoad
.
中调用它
//It should be called after the picker view is loaded.
func loadPickerView(){
if abbvsList.count > 0 {
let currentState = abbvsList[0]// get the first element of array
parser = XMLParser(contentsOf:(NSURL(string:"http://alerts.weather.gov/cap/\(currentState).php?x=0") as! URL))!
alerts = []
exps = []
sev = []
summ = []
eff = []
urg = []
cert = []
link = []
latList = []
longList = []
parser.delegate = self
parser.parse()
alertsTable.reloadData()
if(alerts.isEmpty) {
alertsTable.isHidden = true
}
else {
alertsTable.isHidden = false
}
}else{
//picker view data is empty
}
}
我有一个带有 UIPickerView
的应用程序,只要选择了选择器视图的某一行,它下方的 table 视图就会更新相关信息。我的问题是,无论何时首次打开应用程序,table 视图都是空的,即使默认情况下选择器视图的第一行是 highlighted/selected。我必须向下滚动然后返回到第一行,以便将其注册为真正选中的,并使 table 视图正确更新。
有没有办法让第一行自动被选中,这样我就不必每次都向下滚动并返回?我知道有一个 selectRow()
函数,但它不起作用。它只是做同样的事情。换句话说,选择了 "looks" 行,但它实际上并没有那样注册。有谁知道这是不是就是这样,或者有办法绕过它吗?
编辑:这是我的 didSelectRow
选择器视图代码:
func pickerView(_ pickerView:UIPickerView, didSelectRow row:Int, inComponent component:Int)
{
let currentState = abbvsList[statePicker.selectedRow(inComponent: 0)]
parser = XMLParser(contentsOf:(NSURL(string:"http://alerts.weather.gov/cap/\(currentState).php?x=0") as! URL))!
alerts = []
exps = []
sev = []
summ = []
eff = []
urg = []
cert = []
link = []
latList = []
longList = []
parser.delegate = self
parser.parse()
alertsTable.reloadData()
if(alerts.isEmpty) {
alertsTable.isHidden = true
}
else {
alertsTable.isHidden = false
}
}
加载数据的初始方法,尝试在viewDidAppear
或viewDidLoad
.
//It should be called after the picker view is loaded.
func loadPickerView(){
if abbvsList.count > 0 {
let currentState = abbvsList[0]// get the first element of array
parser = XMLParser(contentsOf:(NSURL(string:"http://alerts.weather.gov/cap/\(currentState).php?x=0") as! URL))!
alerts = []
exps = []
sev = []
summ = []
eff = []
urg = []
cert = []
link = []
latList = []
longList = []
parser.delegate = self
parser.parse()
alertsTable.reloadData()
if(alerts.isEmpty) {
alertsTable.isHidden = true
}
else {
alertsTable.isHidden = false
}
}else{
//picker view data is empty
}
}