将视图控制器中的数据传递到tableviewCell

时间:2017-06-27 09:52:18

标签: ios swift uitableview uiviewcontroller uistoryboardsegue

我试图将Json数据显示在表格视图单元格中,我没有显示任何值。请让我知道我做错了什么。我的tableview正确链接到我的viewcontroller(作为数据源和委托)。

注意:到目前为止,我还没有调用self.tableview.reloadData()。如果这是需要做的事情,请告诉我在哪里打电话。我试过viewdidload()它没有用。

//json data 


if let mydata = data {
                            do{
                                let myJson = try JSONSerialization.jsonObject(with: mydata, options: .mutableContainers) as AnyObject
                             if   let articlesFromJson=myJson["account"] as! NSDictionary?{
  self.points = articlesFromJson["Points__c"] as! Double
  self.tier = articlesFromJson["Member_Tier__c"] as! String

//My destination VC is called HomeViewController
  override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
               if segue.identifier == "HomeViewController" {
            if let destVc = segue.destination as? HomeViewController {
               destVc.pointrs = self.points
               destVc.tiers = self.tier
            }
        }

   }

//tableview 

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as! MemberInfoTableViewCell
                cell.points.text = String(pointrs)
        cell.tier.text = tiers
               return cell
    }

更新:我只是重做它,它就可以了。我一定错过了一些小事!代码似乎是正确的。我还添加了一个导航控制器,所以segue代码也发生了变化。有用。谢谢!

3 个答案:

答案 0 :(得分:0)

1)确保您的变量"指针"已初始化 2)当你第一次来到表视图控制器时,你不需要调用table.relaod() 3)确保你已在下面的代表中传递正确的计数

override func tableView(_ tableView: UITableView, numberOfRowsInSection      section: Int) -> Int {
    return fruits.count //Array Count
} 

答案 1 :(得分:0)

试试这个,通过函数将值传递给" TableViewCellClass"你创建了然后,从那里设置标签的值......

答案 2 :(得分:0)

确保确实将数据传递到表视图控制器,因为表视图控制器看起来没问题。传递数据时,您的代码是

if segue.identifier == "HomeViewController" {
    if let destVc = segue.destination as? HomeViewController {
       destVc.pointrs = self.points
       destVc.tiers = self.tier
    }//Your code can ends up here
}//Your code can ends up here

从代码中查看我的评论。如果这些if语句中的任何一个为false,则表示您没有传递数据。因此,首先在此处设置一个断点,以确定您是否实际传递数据。

如果您确实传递了数据,请在cellForRow方法中设置一个断点,以确保pointrstiers的有效值正确