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") } }
3 Réponses :
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
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
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
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()
Veuillez appuyer sur le bouton haut pour voter ma réponse. Merci
où est le code de la méthode
cellForRowAt
? plz téléchargez votre code completAjout de la méthode
cellForRowAt
à l'exemple de code