我有一個登錄頁面,其中延伸到應用程序的其餘部分。 在我的應用程序的其餘部分中,剩餘的視圖控制器從我自己定義的「BaseViewController」中擴展。使用NSTimer註銷應用程序
我有以下問題嗎?
import UIKit
class BsgBaseViewController: UIViewController {
var nsTimerObj: NSTimer!
func resetTimer(addTimeToTimeOutThread: NSTimeInterval){
nsTimerObj?.invalidate()
let nsTimerObjTemp = NSTimer.scheduledTimerWithTimeInterval(10.0, target: self, selector: "handleIdleEvent:", userInfo: nil, repeats: false)
nsTimerObj = nsTimerObjTemp
}
func handleIdleEvent(timer: NSTimer) {
let createAccountErrorAlert: UIAlertView = UIAlertView()
createAccountErrorAlert.delegate = self
createAccountErrorAlert.title = ("Title")
createAccountErrorAlert.message = "Due to the security policies your session has been timed out. We have to log you out."
createAccountErrorAlert.addButtonWithTitle("OK")
createAccountErrorAlert.show()
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
print("user touched")
self.resetTimer(HardCodedValues().hardCodedTimeOutApplication)
}
override func viewDidAppear(animated: Bool) {
self.resetTimer(HardCodedValues().hardCodedTimeOutApplication)
print("appear")
}
override func viewWillDisappear(animated: Bool) {
self.resetTimer(HardCodedValues().hardCodedTimeOutApplication)
print("disappear")
}
}
touchesBegan()
上UITextField
或UITextView
點擊時不會被解僱的方法。我有一個設置
UIViewController
與UISegmentedControl
與兩個容器和兩個UIViewController
。所有這三個UIViewController
都來自我的BaseViewController
。當我點擊其他兩個UIViewController
三個BaseViewController
的實例被創建,我想避免。
第2點:你看到的只是衍生物的工作方式。一個子類是它的父類的實現...加上一些東西。 –
@Phillip Mills我想要實現的是在一段時間後註銷我的應用程序。 – Cloy
這很好。我說的是,如果你只需要一個定時器的應用程序,把計時器邏輯放在一個有多個孩子的基類中是沒有意義的。它的功能和重置方式的細節在結構匹配你所需要的之前並不重要。 –