gpt4 book ai didi

ios - Swift - UIPickerView - 使用 "reloadAllComponents"后组件仍然隐藏

转载 作者:行者123 更新时间:2023-11-30 13:05:52 24 4
gpt4 key购买 nike

我正在使用网络服务来更新 uipickerview 的组件。

将所有组件附加到 pickCityOptions 数组后,我调用“reloadAllComponents”来更新 uipickerview。

我非常适合更新组件,但更新所有组件后仍然隐藏,直到我在选择器上选项卡,然后所有组件都会出现。

@IBOutlet weak var pickCity: UIPickerView!

let defaults = NSUserDefaults.standardUserDefaults()

var pickCityOptions = [String]()
var items = [[String:String]()]


override func viewDidLoad() {
super.viewDidLoad()

self.pickCity.dataSource = self;
self.pickCity.delegate = self;

let urlPath = "http://www.waelmoharram.com/dalel/api/v1/cities"

let url = NSURL(string: urlPath)

let session = NSURLSession.sharedSession()

let task = session.dataTaskWithURL(url!, completionHandler: {data, response, error -> Void in

if error != nil {

print(error)

} else {


do {
let jsonResult = try NSJSONSerialization.JSONObjectWithData(data!, options:NSJSONReadingOptions.MutableContainers ) as! NSArray


var item:AnyObject

for i in 0 ... jsonResult.count - 1 {

self.items.append([String:String]())

item = jsonResult[i]



self.items[i]["id"] = "\(item["id"]!)" as NSString as String

self.items[i]["city_name"] = item["city_name"] as! NSString as String



self.pickCityOptions.append(self.items[i]["city_name"]!)

}

self.pickCity.reloadAllComponents()



} catch {

print(error)

}


}

})

task.resume()

if let currentCityRow = self.defaults.stringForKey("city") {

self.pickCity.selectRow(Int(currentCityRow)!, inComponent: 0, animated: true)

}else{

self.pickCity.selectRow(0, inComponent: 0, animated: true)

}

}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
{
defaults.setObject(row, forKey: "city")

}


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

func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return pickCityOptions.count;
}

func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return pickCityOptions[row]
}

最佳答案

您需要将 pickCityOptions 用作 NSMutableArray。不要使用 pickCityOptions.append 而是使用 pickCityOptions.addObject

    var pickCityOptions = NSMutableArray()
pickCityOptions.addObject(self.items[i]["city_name"]!)

关于ios - Swift - UIPickerView - 使用 "reloadAllComponents"后组件仍然隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39380545/

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