2016-07-25 20 views
2

Ich arbeite an der TableView in Swift 2.2 in Xcode 7.3.1 und ich bin sicher, von meinem Code, weil es nicht das erste Mal für mich ist, mit TableView zu tun, ich ' m ziehen Daten korrekt vom Server und speicherte es in Array, aber ich stelle fest, dass die zwei Funktionen, die sich auf die Tabellenansicht beziehen, nicht aufgerufen werden, so dass die Tabellenansicht für mich leer erscheint! Ich habe Zelle und verknüpfte Tabellenansicht mit Ansicht auch vom Layout hinzugefügt.Tableview zeigt keine Daten in swift 2

Ich weiß nicht, wo das Problem ist!

class studentTeacherList: UIViewController , UITableViewDataSource,UITableViewDelegate { 

@IBOutlet weak var studentParentTable: UITableView! 


@IBOutlet weak var loadIndicator: UIActivityIndicatorView! 




var username:String! 
var fromSender: String? 
var toRec: String? 

var student_id = [Int]() 
var parent_id = [String]() 
var student_names = [String]() 
var parent_name = [String]() 



//Sent Data 
var s_id:Int = 0 
var s_name = "" 
var p_id = "" 
var p_name = "" 


override func viewDidLoad() { 
    super.viewDidLoad() 
    studentParentTable.delegate = self 
    studentParentTable.dataSource = self 


    let prefs:NSUserDefaults = NSUserDefaults.standardUserDefaults() 
    username = prefs.objectForKey("user")as! String 
    fromSender = prefs.objectForKey("Sender")as! String 
    toRec = prefs.objectForKey("Receiver")as! String 


    self.loadIndicator.startAnimating() 

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), {() -> Void in 

     self.loadList() 
     //self.studentParentTable.reloadData() 


     dispatch_async(dispatch_get_main_queue(), {() -> Void in 
      self.loadIndicator.stopAnimating() 
     }) 
    }); 


    studentParentTable.reloadData() 

} 




func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

    return student_names.count 
} 


func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    //This method to define each cell at Table View 
    let cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "cell") 


    cell.textLabel?.text = student_names[indexPath.row] 
    cell.detailTextLabel?.text = parent_name[indexPath.row] 

    return cell 
} 




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

@IBAction func backButton(sender: AnyObject) { 
    self.dismissViewControllerAnimated(true, completion: nil) 

} 



func loadList() 
{ 
    var normallink = "mylinkhere" 
    normallink = normallink + "?teacherid=" + self.username 



    var studentParentURL:NSURL = NSURL (string: normallink)! 
    let data = NSData(contentsOfURL: studentParentURL)! 



    do { 
     let json = try NSJSONSerialization.JSONObjectWithData(data, options: .AllowFragments) 

     if let alldata = json["data"] as? [[String: AnyObject]] { 
      for onedata in alldata { 
       if let stu_id = onedata["id"] as? Int { 
        student_id.append(stu_id) 
       } 
       if let stu_name = onedata["studentName"] as? String { 
        student_names.append(stu_name) 
       } 
       if let par_id = onedata["parentId"] as? String { 
        parent_id.append(par_id) 
       } 
       if let par_name = onedata["parentName"] as? String { 
        parent_name.append(par_name) 
       } 



      } 
     } 
    } catch { 
     print("Error Serializing JSON: \(error)") 
    } 




    print(student_names.count) 

} 


    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 


    s_id = student_id[indexPath.row] 
    s_name = student_names[indexPath.row] 
    p_id = parent_id[indexPath.row] 
    p_name = parent_name[indexPath.row] 
} 
} 
+3

Versuchen Sie, die reload() aufrufen, um nach 'self.loadIndicator.stopAnimating bewegen()' – WMios

+0

@WMios ja arbeitet es jetzt vielen Dank für Ihre Anmerkung :) –

+0

@WMios ich etwas in meinem Beitrag zu speichern Wert aktualisiert, wenn auf klicken jede Zeile in der Tabellenansicht, aber es gibt mir aus Index –

Antwort

1

Es sieht aus wie Sie nicht nach diesem Aufruf sind Nachladen:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), {() -> Void in 

     self.loadList() 
     //self.studentParentTable.reloadData() 


     dispatch_async(dispatch_get_main_queue(), {() -> Void in 
      self.loadIndicator.stopAnimating() 
     }) 
    }); 

So sollten Sie studentParentTable.reloadData() nach self.loadIndicator.stopAnimating() hinzufügen.