ios - 在 iOS 中使用 UIPickerView 时遇到问题

标签 ios swift uipickerview

我有一个带有 UIPickerView 的应用程序,只要选择了选择器 View 的某一行,它下面的表格 View 就会更新相关信息。我的问题是,每当应用程序首次打开时,即使默认情况下突出显示/选择了选择器 View 的第一行, TableView 也是空的。我必须向下滚动然后返回到第一行,以便将其注册为真正选中的,并使 TableView 正确更新。

有没有办法让第一行自动被选中,这样我就不必每次都向下滚动并返回?我知道有一个 selectRow() 函数,但它不起作用。它只是做同样的事情。换句话说,该行“看起来”被选中,但实际上并没有那样注册。有谁知道这是不是就是这样,或者有办法绕过它吗?

编辑:这是我的选择器 View 的 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
    }
}

最佳答案

加载数据的初始方法,尝试在 viewDidAppearviewDidLoad 中调用它。

//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
    }
}

关于ios - 在 iOS 中使用 UIPickerView 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39909116/

相关文章:

objective-c - UIImageView isAnimating 是否在 4.0 SDK 中中断?

ios - 如何在我的应用程序设置之上(之下)显示定位服务设置

ios - 带有来自 NSMutableArray 的数据的 UITableView 返回空

ios - UIPickerView数据源x委托(delegate)设计

ios - UIPickerView - 条件显示

iphone - 从 OS4.2 开始,iAd 横幅在 iPad 上的高度是多少?

ios - TLYShyNavBar 扩展 View 不适用于 Storyboard

iphone - IOS - 将子 Controller / View 加载到 View 中

ios - TableViewController 在状态栏下滚动

ios - IOS 中 Swift 的 Rest API 未执行