2015-10-01 1 views
0

Je suis conscient de l'ajout de l'indicateur activityIndicator à un certain endroit de la vue, en démarrant et en arrêtant l'animation si nécessaire. Mais dans certains cas, dans mon application, où l'utilisateur clique sur une cellule (avec le titre et le sous-titre), je récupère des données en arrière-plan, puis affiche une alerte à l'utilisateur pour obtenir des entrées. Dans tous ces cas, je viens d'afficher un indicateur d'activité au milieu, ce qui n'a pas l'air si bon. Donc, je voudrais afficher l'indicateur d'activité seulement à la fin de la cellule, sur laquelle l'utilisateur a cliqué. Y-a-t-il un moyen de faire ça? Une chose que je pourrais penser est d'utiliser une table personnalisée View Cell, puis ajouter explicitement un indicateur d'activité là. Mais est-il possible de faire de même avec une cellule de titre et de sous-titre standard, et peut-être repositionner dynamiquement l'indicateur d'activité en fonction de la position de la cellule sur laquelle l'utilisateur a cliqué?Déplacement dynamique de l'indicateur d'activité dans UITableView dans Swift 2.0

Répondre

2

Je pense que vous pouvez le faire en utilisant accessoryView de UITableViewCell

var selectedIndexPath : NSIndexPath? 

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
{ 
    // ... 

    if (indexPath == selectedIndexPath) 
    { 
     cell.accessoryView = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.Gray) 
     (cell.accessoryView as! UIActivityIndicatorView).startAnimating() 
    } 
    else 
    { 
     cell.accessoryView = nil 
    } 

    return cell 
} 

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) 
{ 
    selectedIndexPath = indexPath 
    tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic) 
} 
+0

Il a fait le travail. Le seul changement que je l'ai fait était obtenir la cellule quand didSelectRowAtIndexPath a été appelé comme ceci: laisser cellule = tableView.cellForRowAtIndexPath (indexPath) cellule .accessoryView = UIActivityIndicatorView (activityIndicatorStyle: UIActivityIndicatorViewStyle.Gray)! (! Cellule .accessoryView comme UIActivityIndicatorView) .startAnimating() –