как установить и отключить SVProgressHUD при переходе на другой ViewController

Я хочу показать индикатор выполнения при нажатии кнопки для перемещения другого ViewController (этот ViewController загружается с огромным объемом данных из WebService), и после загрузки все индикаторы выполнения данных будут отклонены.

Я имею в виду, что сначала нажмите кнопку, затем сразу же перейдите к другому ViewController с индикатором выполнения, а индикатор выполнения исчезнет после загрузки всех данных.

здесь я добавляю код для перехода к другому ViewController:

UIStoryboard *sb=[UIStoryboard storyboardWithName:@"Main" bundle:nil];
Guide *guideVC = [sb instantiateViewControllerWithIdentifier:@"Guide"];
[self.navigationController pushViewController:guideVC animated:YES];

И WebService просто выбирает метод viewDidLoad для нового ViewController.

Как я могу это сделать. Любой дайте решение.


person MUNNA    schedule 25.09.2017    source источник
comment
Вы должны использовать очередь операций для обработки этого   -  person Govaadiyo    schedule 25.09.2017
comment
Не могли бы вы показать свой код?   -  person Dixit Akabari    schedule 25.09.2017
comment
как привести пример, пожалуйста @Tofaani Kaanudo   -  person MUNNA    schedule 25.09.2017
comment
подождите, я обновлю код @Dixit Akabari   -  person MUNNA    schedule 25.09.2017
comment
Почему бы вам не вызвать веб-сервис после того, как вы откроете другой контроллер представления (в viewDidLoad)?. Это облегчит вашу задачу   -  person Aditya Srivastava    schedule 25.09.2017
comment
да, я вызываю веб-сервис после открытия другого контроллера просмотра (в viewDidLoad), но когда я нажимаю кнопку, для перемещения нового контроллера просмотра потребуется время   -  person MUNNA    schedule 25.09.2017


Ответы (2)


Здесь я только что показал вам, как отклонить SVProgress. Здесь я использовал свой собственный класс APIManager (с использованием Alamofire) для вызова API.

override func viewDidLoad() {
        super.viewDidLoad()
        self.fetchList()
    }
    func fetchList() {
        SVProgressHUD.show()
        APIManager.callAPIRequest(Method: .post, url: urlStr, parameters: parameters, headers: headers, completion:
            { (result, headerMessage) in
                let dicJSONResponse = result.dictionaryValue
                //SuccessBlock
                SVProgressHUD.dismiss()
        }) { (httpresponse, errorMessage) in
            //Failure blog
            SVProgressHUD.dismiss()
        }
    }
person Nishant Bhindi    schedule 25.09.2017
comment
добро пожаловать, если это действительно поможет вам, пожалуйста, отметьте как ответ @MUNNA - person Nishant Bhindi; 26.09.2017

Пожалуйста, сделайте следующее:

  1. Я думаю, что вы используете basewebservice (родительский класс) для всех своих задач веб-сервиса.
  2. Запустите индикатор выполнения перед вызовом веб-службы (вызов GET, POST, PUT и PATCH).
  3. Остановите индикатор выполнения после получения обратных вызовов об успешном или неудачном завершении.
  4. Если вам нужно обрабатывать очень большие данные, запустите их в фоновом потоке для бесперебойной работы потока пользовательского интерфейса.
person dmp    schedule 25.09.2017
comment
не могли бы вы привести пример - person MUNNA; 25.09.2017
comment
для лучшего понимания - person MUNNA; 25.09.2017