在表格视图行的右侧显示 activity 指示器

Displaying activity indicator to the right of tableview row

我的表格视图将披露指示器作为附件。此 tableview 单元格的 didSelectItem() 调用在后台执行 api 调用。因此视图需要等到响应才能显示下一页。我必须为披露指示器的位置提供一个 activity 指示器。怎么可能像 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")
    }
}

根据您的要求在TableViewCell中添加Activity指标

   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()
        }

向您的租户模型添加一个 Bool 变量 isLoaderShow 并根据 api 完成更改并重新加载 tableView 或重新加载 tableViewCell

  • 首先将右箭头图像和 activity 指示器放在 tableviewCell 中。 (默认 right_Arrow_image.isHidden = false and indicator.isHidden = true )

  • didSelectRowAt方法中隐藏right_Arrow_image.isHidden = trueindicator.isHidden = false

  • 然后调用您的 webservice 并在收到响应后再次将其设置为第一步并移至下一个屏幕

请写在cellForRowAt方法中:

cell.accessoryType = .disclosureIndicator

然后在didSelectRowAt方法中请写

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

收到回复后

activityIndi. stopAnimating()

可能对你有帮助。谢谢