2015-07-15 4 views
0

Привет Я использую этот код, чтобы попытаться анимировать индикатор выполнения на основе времени.Swift - Создание индикатора выполнения

import UIKit 

class LoadingScreen: UIViewController { 

    @IBOutlet var progressView: UIProgressView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 



     var time = 0.0 
     var timer: NSTimer 

     timer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector:Selector("setProgress"), userInfo: nil, repeats: true) 

     func setProgress() { 
      time += 0.1 
       progressView.progress = time/3 
      if time >= 3 { 
       timer.invalidate() 
      } 
     } 

Однако я получаю сообщение об ошибке, которое говорит: не может подписать значение типа double для значения типа float.

EDIT:

Ошибка в этой строке:

progressView.progress = time/3 
+0

В какой строке вы видите ошибку? – Anders

+0

Не то, чтобы Xcode всегда выдавал вам правильную линию для ошибки ... – rghome

+0

@Anders Здесь: progressView.progress = time/3 – dwinnbrown

ответ

5

Если сказал иначе быстры компилятор не принимает тип вывода двойного для 0.0 - объявить

var time : Float = 0.0 

Ссылка - https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html - Swift всегда выбирает Double (а не Float) при выводе типа чисел с плавающей запятой.

+0

Почему голос? Это было правильно. – brimstone

+0

Это сработало, чтобы удалить ошибку, но теперь она падает с ужасным SIGABRT. Консоль отладки показывает: непризнанный селектор, отправленный в экземпляр 0x7feef0708450 ' – dwinnbrown

+3

, это другая проблема. Лучше всего предположить, что вы объявили свою функцию в viewDidLoad, а не в классе, - как подсказывает консоль, нет селектора setProgress в вашем классе –