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