2017-03-01 1 views
0

J'ai donc cette fonction:intérieur tableView: cellForRowAtIndexPath: seulement appelé pour la première 2 cellules

func addActivityIndicator(_ aspectRatio: CGFloat?, index: Int) { 
     if activityIndicator == nil { 
      print("add activity indicator") 
      print("at index: \(index)") 
      let screenWidth = UIScreen.main.bounds.width 
      let height: CGFloat 
      if let aspectRatio = aspectRatio { 
       height = screenWidth/aspectRatio 
      } else { 
       print("aspect ratio is nil") 
       height = screenWidth 
      } 
      let indicatorFrame = CGRect(x: (screenWidth - 60)/2, 
             y: (height - 60)/2, 
             width: 60, 
             height: 60) 

      self.activityIndicator = NVActivityIndicatorView(frame: indicatorFrame, 
                  type: .ballClipRotateMultiple, 
                  color: .lightGray, 
                  padding: nil) 
      self.addSubview(self.activityIndicator!) 
      self.activityIndicator?.startAnimating() 
     } 
    } 

qui ajoutent juste fondamentalement un indicateur d'activité dans le centre de la superview. puis j'ai appelé cette fonction à l'intérieur cellForRow: AtIndexPath:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let contentCell = tableView.dequeueReusableCell(withIdentifier: "ContentCell", for: indexPath) as! ContentCell 
    contentCell.thumbnail.addActivityIndicator(content.aspectRatio, index: indexPath.row) 

    return contentCell 
} 

miniature est une UIImageView qui sera ajouté un indicateur d'activité. Mais dans le journal, je ne vois que ceci:

indicateur d'activité

add à l'index: 0

indicateur d'activité

add à l'index: 1

add indicateur d'activité à l'index: 2

Comment faire pour que la fonction addActivityIndicator fonctionne sur toutes les cellules?

+2

Quelle est la question? – vadian

+1

tbh, il est difficile de comprendre la question mais je suppose que vous demandez pourquoi l'indicateur d'activité est ajouté à 3 cellules seulement, mais vous avez, disons, 20 la raison possible est que vous avez 3 cellules visibles à la fois. tableview n'instancie pas toutes les cellules immédiatement, mais les réutilise. – RinaLiu

+0

mais le journal est imprimé après avoir fait défiler toute la tableview. oublié de mentionner cela. – samitarmum

Répondre

1

Ajouter l'ActivityIndicator sur func awakeFromNib de ContentCell