2016-07-25 86 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()