2017-07-03 1 views
0

私はCartViewControllerに到達するとテーブルがうまくロードされますが、セグエフを渡すとテーブルが空になります!!別のコントローラの他のTableViewsは同じコードでリロードされますが、このビューコントローラは変な動作をしています。テーブルビューはセグバック後にロードされません

class MealsDetailsController: UIViewController , UITableViewDelegate , UITableViewDataSource { 

@IBOutlet weak var tableView: UITableView! 


override func viewWillAppear(_ animated: Bool) { 
    super.viewWillAppear(true) 
    getMeals() 

} 


func getMeals() { 
    Alamofire.request(url!, method: .post, parameters: para,encoding: URLEncoding.default, headers: headers).responseJSON { response in 
     // get data code 
     let info = Meals(meal_id: id, Logo: logoString, meal_name: name, price: price)  
     self.meals.append(info) 
    } 

    DispatchQueue.main.async { 
     self.tableView.reloadData() 
    } 
} 

// what is going on here? 
} else { 

print("sorry data from api has some error") 
} 


} 


} 
+0

以下のようなAlamofire.request function.Updateの外でメインスレッドのコードを呼び出しているかわかりませんコードが属していますが、どのView Controllerのコードがこれなのかを知るのは難しいですね!! –

+0

これはすべてCartViewControllerにあります。私はAPI呼び出しをして、1つのビューコントローラでテーブルをロードしています@DarkInnocence – leo0019

+0

この行を説明すると、 "それをパスしてテーブルが空になってしまいました!!"おそらくGIFをアップロードして動作中に表示します –

答えて

1

私はこの先のクラスを更新してください私はあなたのコードを理解している場合、正しくその後、あなたは

func getMeals() { 

Alamofire.request(url!, method: .post, parameters: para,encoding: URLEncoding.default, headers: headers).responseJSON { response in 

// get data code 
     let info = Meals(meal_id: id, Logo: logoString, meal_name: name, price: price) 
     self.meals.append(info) 
      DispatchQueue.main.async{ 
       self.tableView.reloadData() 
      } 
    } 

} 
+0

私はこれを試しましたが、まだ動作していません – leo0019

+0

plz check tableViewデータソースが呼び出され、セクションメソッドのnumberOfRowsに返される内容を確認します。 –

+2

私は@DS Dharmaにも、更新テーブルの操作がAlamofireレスポンスブロックの外側であることに同意します。要求が完了する前にあなたのテーブルビューが古いデータをリロードするとどうなりますか?>何も変更されません。 – ngbaanh

関連する問題