2016-10-28 7 views
0

Я не знаю, почему, но я был в предположении, что кнопка не должна меняться снова и снова, чтобы переделать себя ....Как вы можете отключить кнопку от запуска при каждом нажатии?

У меня довольно простой код. Когда моя кнопка нажата, она загружает изображение, используя urlSession, в фоновое представление другого viewController и переходит в него.

Моя проблема в том, что если вы нажмете кнопку 3 раза, пока я жду загрузки изображения, мой viewController переместит 3 слоя вниз в navigationController и вернется к исходному viewController. Мне нужно нажать кнопку назад 3 раза. Разве я не могу удалить 3 слоя вниз !?

@IBAction func showImage(_: UIButton) { 

    loadImage() 
} 
func loadImage() { 
    let url = URL(string: "https://upload.wikimedia.org/wikipedia/en/thumb/a/a4/Flag_of_the_United_States.svg/1280px-Flag_of_the_United_States.svg.png") 
    var request = NSMutableURLRequest(url: url!, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) 
    request.httpMethod = "GET" 
    let session = URLSession.shared.dataTask(with: request as URLRequest) { (data, response, error) in 
     guard let data = data else { 
      print("You got an error:\(error)") 
      return 
     } 
     let img = UIImage(data: data) 
     let imgview = UIImageView(image: img) 
     let sb = UIStoryboard(name: "Main", bundle: nil) 
     let ivc = sb.instantiateViewController(withIdentifier: "showImage") 
     ivc.view = imgview 
     self.navigationController?.pushViewController(ivc, animated: true) 
    } 
    session.resume() 
} 
+2

Отключить кнопку перед началом загрузки изображения? –

+1

@PhillipMills Итак, мой код не структурирован неправильно? За исключением того, что мне просто нужно добавить это? И после того, как я перейду, я снова включу кнопку? – Honey

+0

@ Хоть ты даже прочитал название своего вопроса? – Alexander

ответ

0

Благодаря комментарий Филипп Миллс, это то, что я сделал:

Я добавил

@IBOutlet weak var showImage: UIButton! 

, а затем при нажатии, я отключил кнопку с:

showImage.isEnabled = false 

И после выполнения сеанса я включил его снова с помощью:

showImage.isEnabled = true 

Мой полный код:

@IBOutlet weak var showImage: UIButton! // Added 
    @IBAction func showImage(_: UIButton) { 
     showImage.isEnabled = false // Added 
     loadImage() 
    } 
    func loadImage() { 
     let url = URL(string: "https://upload.wikimedia.org/wikipedia/en/thumb/a/a4/Flag_of_the_United_States.svg/1280px-Flag_of_the_United_States.svg.png") 
     var request = NSMutableURLRequest(url: url!, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) 
     request.httpMethod = "GET" 
     let session = URLSession.shared.dataTask(with: request as URLRequest) { (data, response, error) in 
      guard let data = data else { 
       print("You got an error:\(error)") 
       return 
      } 
      let img = UIImage(data: data) 
      let imgview = UIImageView(image: img) 
      let sb = UIStoryboard(name: "Main", bundle: nil) 
      let ivc = sb.instantiateViewController(withIdentifier: "showImage") 
      ivc.view = imgview 
      self.navigationController?.pushViewController(ivc, animated: true) 
      self.showImage.isEnabled = true // Added 


     } 
     session.resume() 
    } 
Смежные вопросы