2015-05-08 3 views
0

Я создаю простое приложение видео Выгрузкаметод UIButton Действие не работает в быстром

Все работает хорошо, но когда я нажимаю на кнопку скачать видео скачивании работу отлично, но индикатор активности не работать и писать сбщ в Println также не работа

Я добавить кнопку на пользовательской точки зрения, и я использовал библиотеку SwiftSpinner.swift для индикатора активности

здесь код

@IBAction func downloadAction(sender: AnyObject) { 
    println("hello") 

    SwiftSpinner.show("Downloading...", animated: true) 
    let urlPath = self.photoInfo?.sourceImageURL 
    let urlLastPath = self.photoInfo?.sourceImageURL.lastPathComponent 
    var data : NSData = NSData(contentsOfURL: urlPath!)! 

    var path = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.CachesDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0].stringByAppendingPathComponent(urlLastPath!) as String 
    println(path) 

    delay(seconds: 16.0, completion: { 
     SwiftSpinner.show("Downloading Completed", animated: false) 
    }) 



    data.writeToFile(path, atomically: true) 

    delay(seconds: 18.0, completion: { 
     SwiftSpinner.hide() 
    }) 

    UISaveVideoAtPathToSavedPhotosAlbum(path, nil, nil, nil) 

} 
+0

Приложите ли вы свой идентификатор активности (SwiftSpinner) к IBOutlet в раскадровке. – Natasha

+0

Спасибо за воспроизведение. Я не использую встроенный индикатор активности, но я использую библиотеку SwiftySpinner.swift от github. –

+1

здесь ссылка на SwiftSpinner https://github.com/icanzilb/SwiftSpinner –

ответ

0

Вот ваш полный рабочий код:

import UIKit 

class ViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
    } 

    @IBAction func downloadAction(sender: AnyObject) { 
     println("hello") 

     //Spinner will show when you press button. 

     SwiftSpinner.show("Downloading...", animated: true) 
     if let checkedUrl = NSURL(string: "http://hdwallpaperd.com/wp-content/uploads/hd-widescreen-wallpapers-4.jpg") { 
      downloadImage(checkedUrl) 
     } 

    } 

    func downloadImage(url:NSURL){ 
     println("Started downloading \"\(url.lastPathComponent!.stringByDeletingPathExtension)\".") 
     getDataFromUrl(url) { data in 

      // Do that stuff into background queue 

      dispatch_async(dispatch_get_main_queue()) { 

       SwiftSpinner.show("Downloading Completed", animated: false) 

       //Here you can set delay so that you can perform any action after download finish. 

       let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(2 * Double(NSEC_PER_SEC))) 
       dispatch_after(delayTime, dispatch_get_main_queue()) { 

        // This code will run after 2 second in this case. 

        var path = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.CachesDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0].stringByAppendingPathComponent("Image1") as String 
        println(path) 
        data!.writeToFile(path, atomically: true) 
        SwiftSpinner.hide() // After 2 second your spinner will hide. 
        UISaveVideoAtPathToSavedPhotosAlbum(path, nil, nil, nil) 
       } 
      } 
     } 
    } 

    func getDataFromUrl(urL:NSURL, completion: ((data: NSData?) -> Void)) { 
     NSURLSession.sharedSession().dataTaskWithURL(urL) { (data, response, error) in 
      completion(data: NSData(data: data)) 
      }.resume() 
    } 
} 

Вы можете обратиться THIS пример проекта.

Смежные вопросы