2016-07-25 90 views
2

我正在使用swift 2.2的xcode 7.3.1中的tableView,我確信從我的代碼中,因爲這不是我第一次處理tableView, m從服務器正確拉數據並將其存儲在數組中,但我注意到與表視圖相關的兩個函數未被調用,所以表視圖對我來說是空的!我從佈局中添加了單元格和鏈接的tableview。Tableview不顯示數據在swift 2中

我不知道問題在哪裏!

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

嘗試移動reloadData()self.loadIndicator.stopAnimating後'致電()' – WMios

+0

@WMios是它的工作現在感謝您的來信:) –

+0

@WMios我更新的東西在我的崗位存儲值時點擊在表格視圖中的每一行,但它使我脫離索引 –

回答

1

看起來你是不是這個電話後重裝:

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() 
     }) 
    }); 

所以,你應該self.loadIndicator.stopAnimating()之後添加studentParentTable.reloadData()