UITableView
に問題があります。実際には、以下のコードは、うまく動作しています。私のプロジェクトで、ボタンをクリックすると、新しいView Controllerが開きました。新しいView Controllerには、JSONからテーブルビューデータを動的にロードするためのUITableView
がありました。問題は、ボタンをクリックするとtableViewデータが表示されないことです。白い空の画面が表示されます。その後、View Controllerのどこかをクリックすると、突然tableviewのデータが表示されます。ホーはこの問題を解決しますか?前もって感謝します!テーブルビューが再ロードされますが、表示されていない場合は、ViewControllerのどこでもクリックしてください。
コードIは
import UIKit
class Events: UIViewController,UITableViewDelegate,UITableViewDataSource {
@IBOutlet var tableView: UITableView!
override func viewDidLoad()
{
super.viewDidLoad()
retrieveDataFromJASON()
}
var events : [[String: AnyObject]] = [[String: AnyObject]]()
var dateAndTime : [[String: AnyObject]] = [[String: AnyObject]]()
func retrieveDataFromJASON()
{
let URL = NSURL(string: "http://portal.shineevents.co.in/portal/api_load/app_load_call")
let requestURL = NSMutableURLRequest(URL: URL!)
requestURL.HTTPMethod = "POST"
let postString = "api=event_list"
requestURL.addValue("123456", forHTTPHeaderField: "X-API-KEY")
requestURL.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
let task = NSURLSession.sharedSession().dataTaskWithRequest(requestURL) { data, response, error in
guard error == nil && data != nil else {
print("error=\(error)")
return
}
if let httpStatus = response as? NSHTTPURLResponse where httpStatus.statusCode != 200 {
print("statusCode should be 200, but is \(httpStatus.statusCode)")
print("response = \(response)")
}
let responseString2 = try! NSJSONSerialization.JSONObjectWithData(data!, options:.AllowFragments)
//print(responseString2) /*prints whole JSON Data*/
self.events = (responseString2["event_listing"] as? [[String: AnyObject]])!
self.tableView.reloadData()
//print(self.events[0]["event_details"])
}
task.resume()
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return events.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = self.tableView.dequeueReusableCellWithIdentifier("eventCell", forIndexPath: indexPath) as! EventTableViewCell
cell.eventName.text = events[indexPath.row]["event_details"] as? String
cell.eventDate.text = events[indexPath.row]["modified_date"] as? String
cell.eventTime.hidden = true
cell.rowNumber.text = String(indexPath.row+1)
return cell
}
screenshot1を試している:私はそれをクリックすると、テーブルビューが突然データを示している(以下:。最初は(15秒後に示す)
sceenshot2を任意のデータを示されていませんあなたが舞にその更新を派遣する必要があるように2秒)
うわー素晴らしい答え。活動インジケータの追加もsuperb.thanks Mr.Niravです:) –
ようこそ、ハッピーコーディング:) –