TableView数据无法重载Swift

时间:2017-05-07 11:51:22

标签: swift swift3

我在餐厅应用程序上工作,我需要获得所有餐厅类型..我成功获取所有数据,但tableview没有重新加载..

var arrSubMenu = [ResataurantType]()

//TableView Datasource And Delegate Method
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    print(arrSubMenu.count)
    return arrSubMenu.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell: leftMenuTableViewCell = 
    tableView.dequeueReusableCell(withIdentifier: "tableCell") as! 
    leftMenuTableViewCell
    cell.name.text = self.arrSubMenu[indexPath.row].type
    return cell
}

func getRestaurantType() {
    let manager = AFHTTPSessionManager()
    manager.requestSerializer = AFJSONRequestSerializer()
    manager.get(RESTAURANTTYPE, parameters: nil, progress: nil, success: { 
        (operation, responseObj) in
        if let objDic = responseObj as? [String:Any] {
            if let objArray = objDic["RESTAURANT_TYPE"] as? NSArray {
                for objType in objArray {
                    let ObjRestaurant = ResataurantType()
                    if let objString = objType as? String {
                        ObjRestaurant.type = objString
                    }
                    self.arrSubMenu.append(ObjRestaurant)
                }
                DispatchQueue.main.async {
                    self.tableView.reloadData()
                }
            }
        }
    }) { (operation, error) in
        print(error)
    }
}

我在ViewDidLoad()中调用此函数但仍然无法使用记录查看tableview

3 个答案:

答案 0 :(得分:0)

您只需输入:

首先是IBOutlet:

@IBOutlet var tableView : UITableView

在viewDidLoad中:

tableView.dataSource = self //OR connection between tableView in storyboard and tableView in swift class 

答案 1 :(得分:0)

你什么时候打电话给getRestaurantType()?是否可以在分配tableview的数据源之前调用它?这可能会使tableview显示为空,尽管存在基础数据。而且,除非你在程序中的某个其他位置调用reloadData(),否则它不会自行刷新。

答案 2 :(得分:0)

在索引方法

的行的单元格下面替换
let cell = 
tableView.dequeueReusableCell(withIdentifier: "tableCell" ,for: indexPath)as! 
leftMenuTableViewCellenter