Отображение индикатора активности справа от строки просмотра таблицы - PullRequest
0 голосов
/ 01 января 2019

В моем табличном представлении есть индикатор Раскрытия в качестве дополнительного предмета.Вызов 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 голосов
/ 01 января 2019
  • Поместите изображение правой стрелки и индикатор активности в ваш tableviewCell первым.(По умолчанию right_Arrow_image.isHidden = false and indicator.isHidden = true)

  • в didSelectRowAt метод скрытия right_Arrow_image.isHidden = true и indicator.isHidden = false

  • Затем вызовите webservice ипосле получения ответа снова установите его в качестве первого шага и перейдите к следующему экрану

0 голосов
/ 07 января 2019

Пожалуйста, напишите в cellForRowAt Метод:

cell.accessoryType = .disclosureIndicator

Затем в didSelectRowAt Метод, пожалуйста, напишите

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

После получения ответа

activityIndi. stopAnimating()

Это может помочь вам.Спасибо

0 голосов
/ 01 января 2019

Добавьте индикатор активности в 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()
        }

Добавьте одну Bool переменную для вашей модели арендатора isLoaderShow и измените в соответствии с завершением API и перезагрузите tableView или перезагрузитеtableViewCell

...