我的表视图具有“披露”指示器作为附件。此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")
}
}
答案 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 = true
和indicator.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()
它可能会帮助您。谢谢