Ich habe ein Problem mit UITableView
. Tatsächlich ist unterhalb Code funktioniert gut else tableview. Wenn ich in meinem Projekt auf den Button klicke, wurde ein neuer View-Controller geöffnet. Der neue View-Controller hatte eine UITableView
, um Tabellenansichtsdaten dynamisch von JSON zu laden. Problem ist, dass die TableView-Daten nicht angezeigt werden, wenn ich auf die Schaltfläche klicke. Es erscheint leerer weißer Bildschirm. Dann klicke ich irgendwo im View-Controller, dann werden plötzlich die Tabellenansichtsdaten angezeigt. Ich repariere dieses Problem? Danke im Voraus!TableView wird neu geladen Aber nicht angezeigt, wenn ich nicht auf ViewController in Swift 2.0 klicke?
-Code habe ich
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 versuchen: Zunächst keine Daten gezeigt (nach den 15 Sekunden gezeigt)
sceenshot2. Die Tabellenansicht zeigt die Daten auf einmal, wenn ich es klicken (unten 2 Sekunden)
Wow große antwort.auch das Hinzufügen von Aktivität Indikator ist superb.thanks Mr. Nirav :) –
Willkommen Kumpel, Happy Coding :) –