2017-06-20 4 views
1

Ich habe meine Json Link-Daten von TableViewCell, und dann abrufen Sie diese Daten vom Server und Anzeige in CollectionView mit verwandten TableViewCell-Daten. Wie werden diese Daten in swift3 angezeigt? Bitte hilf mir.Wie zeigt man dynamisch Daten vom Server in CollectionViewCell in TableViewCell mit swift3 an?

Ich habe URL Link (mainThemeList.main_associated_url, main_name) von TableViewCell.

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



     let mainThemeList = mainHomeThemeTable[(indexPath as NSIndexPath).row] 

     let cell = tableView.dequeueReusableCell(withIdentifier: "homecell") as! HomeCategoryRowCell 



     DispatchQueue.main.async { 
      cell.categoryTitle.text = mainThemeList.main_name 
      cell.mainAssociatedURL.text = mainThemeList.main_associated_url 


      self.prefs.set(mainThemeList.main_name, forKey: "main_name") 
      cell.categoryTitle.font = UIFont.boldSystemFont(ofSize: 17.0) 
      cell.collectionView.reloadData() 

     } 

     DispatchQueue.main.async { 

      self.retrieveDataFromServer(associated_url: mainThemeList.main_associated_url,main_name: mainThemeList.main_name) 
     } 

     return cell 
    } 

Und dann Daten bezogene URL Link-Daten vom Server.

private func retrieveDataFromServe(associated_url : String , main_name: String) { 
     SwiftLoading().showLoading() 
     if Reachability().isInternetAvailable() == true { 

      self.rest.auth(auth: prefs.value(forKey: "access_token") as! String!) 
      rest.get(url: StringResource().mainURL + associated_url , parma: [ "show_min": "true" ], finished: {(result : NSDictionary, status : Int) -> Void in 


       self.assetsTable.removeAll() 
       if(status == 200){ 
        let data = result["data"] as! NSArray 
        if (data.count>0){ 
         for item in 0...(data.count) - 1 { 

          let themes : AnyObject = data[item] as AnyObject 
          let created = themes["created"] as! String 
          let assets_id = themes["id"] as! Int 
          let name = themes["name"] as! String 
          var poster_img_url = themes["poster_image_url"] as! String 
          let provider_id = themes["provider_id"] as! Int 

          poster_img_url = StringResource().posterURL + poster_img_url 

          self.assetsTable.append(AssetsTableItem(main_name: main_name,created: created,assets_id: assets_id, name: name, poster_image_url: poster_img_url,provider_id: provider_id)) 

         } 
        } 

        SwiftLoading().hideLoading() 

       }else{ 

        SwiftLoading().hideLoading() 

       } 
      }) 
     } 
    } 

Abrufen von Daten aus Server-Datenspeicher in AssetsTable.

Und dann AssetsTable Daten in CollectionViewCell angezeigt.

Mein Problem ist SammlungViewCell Daten sind mit früheren AssetsTable Daten dupliziert und zeigten keine korrekten Daten in CollectionView.

enter image description here

Meine tableViewCell Show (Aktion, Drama) Etiketten- und My CollectionViewCell zeigen Filme Name und Movie-Bild. Ich erhalte Daten für CollectionViewCell vom Server, aber CollectionViewCell zeigte keine zugehörigen Daten an.

+0

Ihre Frage bearbeiten und machen es deutlich, indem Sie einige weitere stopft das Szenario zu verstehen. –

+0

Also im Grunde versuchen Sie, Sammlungsansicht mit in der TableViewCell zu verwenden. und Ihr Problem hängt mit der Herausnahme der Tabellenansichtszelle zusammen. Sie müssen die Daten für die Sammlungsansicht jeder tableViewCell separat festlegen und die Daten in cellForRowAtIndex von tableView übergeben, die angezeigt werden müssen. Jede Zelle enthält/speichert/besitzt eigene Sammlungsansichtsdaten. –

+0

Machen Sie und Array von Wörterbuch in der Klasse TableViewCell und übergeben Sie die entsprechenden Daten in CellForRowAtIndexPath von TableView abgerufen von Webservice. –

Antwort

0

in HomeVideoCell Subclass aufzuräumen Daten in prepareforreuse

override func prepareForReuse() { 
    super.prepareForReuse() 
    self.movieTitle.text = "" 
    self.imageView.image = nil 
} 
+0

Ich kann Cell in HomeVideoCell.swift nicht aufrufen. Wie man anruft? @MeghsDhameliya –

+0

Verwenden Sie selbst, wie Sie bereits in der Zelle sind –

+0

@SanSan bitte als gelöst markieren, wenn Ihr Problem behoben –

Verwandte Themen