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

时间:2019-01-01 06:01:09

标签: swift uitableview uiactivityindicatorview

我的表视图具有“披露”指示器作为附件。此tableview单元格的didSelectItem()调用在后台执行api调用。因此,视图将需要等待直到响应显示下一页。我必须为披露指标的位置提供一个活动指标。像在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")
    }
}

Expected output

3 个答案:

答案 0 :(得分:2)

根据您的要求在tel.php中添加活动指示器

file_get_contents($url)

向您的租户模型TableViewCell添加一个 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() } 变量,并根据api完成情况进行更改,然后重新加载Bool或重新加载isLoaderShow

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

请以cellForRowAt方法写信:

cell.accessoryType = .disclosureIndicator

然后以didSelectRowAt方法书写

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

得到回复后

activityIndi. stopAnimating()

它可能会帮助您。谢谢