1
votes

Affichage de l'indicateur d'activité à droite de la ligne du tableau

Ma vue de table a l'indicateur de divulgation comme élément accessoire. L'appel didSelectItem () de cette cellule tableview effectue un appel API en arrière-plan. La vue devra donc attendre la réponse pour afficher la page suivante. Je dois fournir un indicateur d'activité à la position de l'indicateur de divulgation. comment c'est possible comme dans la page des paramètres iOS

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    // Returns the cell value for each index
    let cell = tableView.dequeueReusableCell(withIdentifier: TenantCell.identifier, for: indexPath) as! TenantCell
    cell.populate(with: tenantList[indexPath.row])
    return cell
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    Api.domain = tenantList[indexPath.row].url!
    sharedAFManager.getJsonData(api: Api.theme, completionHandler: { (response, statusCode) in
        if let theme = response {
            Api.logo = theme["logo"].stringValue
            Constants.passwordRegx = theme["passwordRegex"].stringValue
            self.performSegue(withIdentifier: Segue.login, sender: indexPath.row)
        }
    })
}


/// UITableview cell populating tenant informations
class TenantCell: UITableViewCell {

    @IBOutlet weak var tenantImage: UIImageView!
    @IBOutlet weak var tenantNameLabel: UILabel!
    @IBOutlet weak var tenantUrlLabel: UILabel!

    func populate(with tenant: Tenant) {
        tenantNameLabel?.text = tenant.name
        tenantUrlLabel?.text = tenant.url
        tenantImage.image = UIImage(named: "breifcase")
    }
}

Résultat attendu


2 commentaires

où est le code de la méthode cellForRowAt ? plz téléchargez votre code complet


Ajout de la méthode cellForRowAt à l'exemple de code


3 Réponses :


2
votes

Ajoutez un indicateur d'activité dans TableViewCell Selon votre

   class TenantCell: UITableViewCell {

    @IBOutlet weak var tenantImage: UIImageView!
    @IBOutlet weak var tenantNameLabel: UILabel!
    @IBOutlet weak var tenantUrlLabel: UILabel!
    @IBOutlet weak var activityIndi: UIActivityIndicatorView!

    func populate(with tenant: Tenant) {
        tenantNameLabel?.text = tenant.name
        tenantUrlLabel?.text = tenant.url
        tenantImage.image = UIImage(named: "breifcase")
        if tenant.isLoaderShow{
           activityIndi.startAnimating()
        }else{
           activityIndi.stopAnimating()
        }

Ajoutez une variable Bool à votre modèle de locataire isLoaderShow et changez selon la fin de l'API et rechargez le tableView ou rechargez tableViewCell


3 commentaires

Désolé, cela ne répond pas à mes besoins. car j'ai besoin d'afficher l'indicateur d'activité à la place de l'indicateur de divulgation lors du chargement, comme dans mon image de référence


Désolé, cela ne répond pas à mes besoins. car je dois montrer l'indicateur d'activité à la place de l'indicateur de divulgation lors du chargement.


Oui, vous pouvez y parvenir en utilisant l'indicateur Masquer et afficher la divulgation selon l'achèvement de l'API



1
votes
  • Placez d'abord l'image de la flèche droite et l'indicateur d'activité dans votre tableviewCell . (Défaut right_Arrow_image.isHidden = false et indicateur.isHidden = true )

  • dans la méthode didSelectRowAt , masquez right_Arrow_image.isHidden = true et indicateur.isHidden = false

  • Ensuite, appelez votre webservice et après avoir obtenu une réponse, définissez-le à nouveau comme première étape et passez à l'écran suivant


0 commentaires

2
votes

Veuillez écrire dans la méthode cellForRowAt :

activityIndi. stopAnimating()

Puis dans la méthode didSelectRowAt , veuillez écrire

guard let cell : TenantCell = (tableView.cellForRow(at: indexPath) as! TenantCell) else {
        return
}
    cell.accessoryView = activityIndi
    activityIndi. startAnimating()


1 commentaires

Veuillez appuyer sur le bouton haut pour voter ma réponse. Merci