2016-01-05 31 views
0

在我的應用程序中,我有一個視圖,並且我希望此視圖在8秒後顯示每次都被解除。爲了做到這一點,我在視圖創建函數內部創建了一個定時器,用於在觸發後隱藏視圖。有用。但是在某些情況下,我想呈現我希望在創建+8秒後被解散的視圖的兩個副本。問題是,定時器工作只有一次 - 它隱藏來看一個副本,第二保持在屏幕上Swift - 如何運行乘法計時器?

我的代碼是

func presentShowStatusShort(text text:String) { 

    pointsShort = NSBundle.mainBundle().loadNibNamed("helperShowStatusShort", owner: self, options: nil).first! as! helperShowStatusShort 
    pointsShort?.frame.size.width = self.view.bounds.width 

    if pointsShortOnScreen { 

     pointsShort!.frame.origin.y = pointsShort!.frame.origin.y + 39 

    } 

    pointsShort?.text.text = "\(text.uppercaseString)" 
    pointsShort!.dismissButton.addTarget(self, action: "dismissShowStatusShort", forControlEvents: UIControlEvents.TouchUpInside) 

    var timer = NSTimer.scheduledTimerWithTimeInterval(8, target: self, selector: "dismissShowStatusShort", userInfo: nil, repeats: false) 

    pointsShortOnScreen = true 

    view.addSubview(pointsShort!) 

} 

func dismissShowStatusShort() { 

    pointsShortOnScreen = false 

    UIView.animateWithDuration(0.5, animations: { 

     self.pointsShort?.frame.origin.y = (self.pointsShort?.frame.origin.y)! - 64 

     }, completion: { 
      finished in 

      self.pointsShort?.removeFromSuperview() 
    }) 


} 
+0

對於我的標題和問題本身講述不同的東西。所以你只想用一個定時器來關閉這兩個視圖,或者每個視圖使用一個定時器? – azimov

+0

只需使用一個數組來存儲所有定時器,當需要時停止並刪除它們 – azimov

回答

1

從一個角度OOP,您應該創建一個類來幫助您完成此。該類將擁有計時器並保持對視圖的引用。當定時器到期時,它會調用一個回調函數,並將其自身作爲參數傳遞,這樣控制器就可以獲得關聯的視圖並將其關閉。

此類的所有實例都將存儲在控制器上的數組實例變量中,因此您可以添加多個實例並在每個實例到期後將其刪除。