2016-10-26 1 views
0

I 사용자가 10 minutes.I'm 당 하나 개의 요청이 이제 코드일시적으로 다른 요청

1 사용자에게이 세 가지 포인트를 번역 빨아 제출 제한하는 빠른 아이폰 OS 기반의 응용 프로그램을 짓고 있어요을 만들기에서 사용자를 일시 중단 버튼을 클릭 2 버튼이 10 분 동안 비활성화됩니다. 3 버튼이 활성화되었습니다.

나는 전체 코드가 필요하지는 않습니다 :) 그냥 방법이나 조언.

는 당신에게 다음과 같은

답변

1

먼저 영구 데이터에 상태를 유지하고 사용자가 다른 컨트롤러로 이동 한 다음 돌아가면 버튼이 여전히 비활성화되어 있어야합니다. 컨트롤러에서 다음

class PersistentData { 
    static let sharedInstance = PersistentData(); 
    var disableSubmitButton = false 
} 

override func viewDidLoad() { 
    // each load need to check 
    if PersistentData.sharedInstance.disableSubmitButton == true { 
     submitButton.isEnabled = false 
    } 
} 

func onButtonClicked() { 

    // change button to disable 
    submitButton.isEnabled = false 

    // set state in persistent data so it can be the same wherever controller you go 
    PersistentData.sharedInstance.disableSubmitButton = true 

    // now set the timer to enable back 
    Timer.scheduledTimer(timeInterval: 10.0 * 60, target: self, selector: #selector(self.updateButtonState), userInfo: nil, repeats: false); 
} 

func updateButtonState() { 

    // update value in persitence data 
    PersistentData.sharedInstance.disableSubmitButton = false 

    // change button to enable back 
    submitButton.isEnabled = true 
} 
1

참고 감사합니다 TimeInterval이 초 그래서 * 10 (60)은 10 분입니다. UI 업데이트는 주 스레드에서 발생해야합니다. 따라서 주 블록으로 시간 블록이 다시 전달됩니다.

@IBAction func touchButton(_ sender: AnyObject) { 
     button.isEnabled = false 
     Timer.scheduledTimer(withTimeInterval: 60*10, repeats: false) { _ in 
      DispatchQueue.main.async { 
       self.button.isEnabled = true 
      } 
     } 
    }