2014-10-23 5 views
0

그래서 1 초마다 새로 고침을하여 레이블을 업데이트하려고합니다. 불행히도 어떤 이유로 트리거가 아닙니다. 코멘트와 함께 아래 코드.NSTimer가 레이블을 업데이트하지 않습니다.

import UIKit 


class ViewController: UIViewController { 

    @IBOutlet var tt_CountDown: UILabel! 


    var tt_currentDate = NSDate() 
    var tt_objCalendar = NSCalendar.currentCalendar() 


    override func viewDidLoad() { 
     super.viewDidLoad() 

     self.timeClassManagement() 

     //The timer I'm using to call the function to repeat 
     var timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("timeClassManagement"), userInfo: nil, repeats: true) 

    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    func timeClassManagement(){ 
     //the function that holds the code for the label below 
     tt_CountDown.text = "\(String(tt_hour)):\(String(tt_minute)):\(String(tt_second))" 

    } 



} 
+0

타이머는 실제로 멈추지 않습니다. 그것은 대부분의 시간을위한 시계입니다. tt_CountDown이 nil이 아니라는 것을 어떻게 증명할 것인가? 신속한 답변 ... 응답 해 주셔서 감사합니다! – user3708761

+0

멈추지 않으면이 뷰를 다시로드하면 메모리 문제가 발생합니다 (타이머 두 개, 세 개, 네 개 등) – borrrden

+0

그러나 실제로 tt_hour tt_minute 등을 어디에서 업데이트합니까? ? – borrrden

답변

3

문제는 액션 메소드를 호출에 실패 타이머 그는하지입니다; 그건 잘 작동합니다. 문제는 채팅에서 라벨을 업데이트하는 데 사용한 코드에 있습니다.

func timeClassManagement(){ 
var tt_objDateFormat = tt_objCalendar.components(.CalendarUnitHour | .CalendarUnitMinute | .CalendarUnitSecond, fromDate: tt_currentDate) 

var tt_hour = tt_objDateFormat.hour 
var tt_minute = tt_objDateFormat.minute 
var tt_second = tt_objDateFormat.second 

tt_CountDown.text = "\(String(tt_hour)):\(String(tt_minute)):\(String(tt_second))" 

} 

사용중인 날짜 (tt_currentDate)는 메소드가 호출 될 때마다 동일합니다. 변경 될 수 있도록 현재 날짜를 전달해야합니다.

var tt_objDateFormat = tt_objCalendar.components(.CalendarUnitHour | .CalendarUnitMinute | .CalendarUnitSecond, fromDate:NSDate.date()) 
1

NSTimer init에 함수 이름의 문자열을 전달하기 만하면됩니다. 선택자는 ObjC 구조이며 선택기를 수락하는 메소드는 Swift에서 문자열을 제공 할 수 있습니다.

첫 번째 timer은 속성이어야합니다. 그것은 viewDidLoad이 끝날 때까지 사라질 것입니다.

timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "timeClassManagement", userInfo: nil, repeats: true) 

더 자세한 내용이 비슷한 질문이 대답으로 제공됩니다 여기에 대답을 참조하십시오 : https://stackoverflow.com/a/24007718/3879

+0

나는 이미이 작업을했는데, 불행히도 당신의 버전을 돌리는 것이 도움이되지 못했다 ... – user3708761

+0

인터페이스 빌더에서 'UILabel'을 콘센트에 연결했는지, 그렇습니까? – ray

+0

나는 가지고있다 @IBOutlet var tt_CountDown : UILabel! ViewController 클래스 바로 아래 – user3708761

관련 문제