1

Dans mon application Swift, j'ai une vue de table, dans laquelle la sélection d'une cellule, vous amène à une page de détail, et la page de détails prend du temps à charger. J'essaye de montrer un indicateur d'activité pendant qu'il charge. Comment puis-je faire ceci? À l'heure actuelle, lorsqu'une cellule est sélectionnée, l'indicateur d'activité n'apparaît pas.Indicateur d'activité après la sélection de la cellule

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 

     let selectedCell:UITableViewCell = tableView.cellForRowAtIndexPath(indexPath)! 

     selectedCell.contentView.backgroundColor = UIColor(red:1.00, green:1.00, blue:1.00, alpha:1.0) 


     let myActivityIndicator = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.Gray) 
     myActivityIndicator.center = view.center 
     myActivityIndicator.startAnimating() 
     view.addSubview(myActivityIndicator) 


     let defaults = NSUserDefaults.standardUserDefaults() 

     if let data_id = self.ids[indexPath.row] as? Int { 

      defaults.setValue("\(data_id)", forKey: "data_id") 
      defaults.synchronize() 

      self.performSegueWithIdentifier("showInfo", sender: self) 

     }  
    } 

Répondre

1

Dans votre detailViewController procédez comme suit

Ajouter un activityIndicator

var activityIndicator = UIActivityIndicatorView(frame: CGRectMake(0,0, 50, 50)) as UIActivityIndicatorView 
activityIndicator.center = CGPoint(x: (self.view.frame.width)/2, y: (self.view.frame.height)/3) 
activityIndicator.hidesWhenStopped = true 
activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.WhiteLarge 
activityIndicator.color = UIColor.grayColor() 
self.view.addSubview(activityIndicator) 

Dans votre viewDidLoad démarrer l'animation

activityIndicator.startAnimating() 

Maintenant, vous allez pour charger que certaines données dans certains fonction ou ce que vous faites, quand tout cela est fait, arrêtez le imation dans la dernière fonction que vous appelez

activityIndicator.stopAnimating()