2017-05-07 8 views
0

Ich arbeite an Restaurant app, wo ich brauche all Restaurant zu bekommen type..i erfolgreich alle Daten erhalten, aber nicht Tableview Nachladen ..Tableview Daten Nachladen Swift Nicht

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

Ich nenne diese Funktion in ViewDidLoad() aber immer noch kann ich nicht polulate Tableview mit Rekord

+0

Sie die Delegierten Tableview gesetzt und Datenquelle zu dieser Klasse von Ihnen? –

+0

@RakshithNandish ja ich habe es eingestellt..i bekomme arrSubMenu.count total in numberOfRowsInSection aber cellForRowAt Nicht ausgeführt .. – Foolish

+0

'arrSubMenu.count' ist wahrscheinlich' 0'. – ozgur

Antwort

1

-Diese kann möglich sein Grund von meiner Person Erfahrung

  1. Tableview data~~POS=TRUNC nicht auf Selbst gesetzt.
    -Verification: - Haltepunkt auf TableView Datenquelle & Delegate Methoden.

  2. Ihr Array arrSubMenu enthält keinen einzelnen Wert.
    -Verification: - Haltepunkt & Drucken Sie das arrSubMenu vor dem Neuladen der TableView.

0

Sie nur eingeben müssen:

zuerst eine IBOutlet:

@IBOutlet var tableView : UITableView 

In viewDidLoad:

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

Vielen Dank für die Antwort, aber Datenquelle Verbindung ist ok.wenn ich statischen Array dann alle arbeiten perfekt, aber wenn ich Daten von API bekommen, funktioniert es nicht .. – Foolish

0

Wenn rufen Sie getRestaurantType()? Könnte es sein, dass es aufgerufen wird, bevor die Datenquelle der Tabellenansicht zugewiesen wird? Dadurch könnte die Tabellenansicht leer erscheinen, obwohl die zugrunde liegenden Daten vorhanden sind. Und wenn Sie reloadData() nicht an einem anderen Punkt im Programm aufrufen, wird es sich nicht selbst aktualisieren.

0

Ersetzen Sie unten in Zelle für Zeile am Index-Methode

let cell = 
tableView.dequeueReusableCell(withIdentifier: "tableCell" ,for: indexPath)as! 
leftMenuTableViewCellenter