2016-04-25 14 views
1

我使用SwiftLoading:的NSTimer與SwiftLoading

https://www.miniassets.com/news/1-create-loading-with-activity-indicator-in-swift-2-and-xcode-7.html

隱藏它,我用一個NSTimer:

var timer = NSTimer.scheduledTimerWithInterval(4.0, target: self, selector: #selector(ViewController.update), userInfo: nil, repeats: false) 

func update() 
{ 
    SwiftLoading().hideLoading() 
} 

功能 「更新()」 的4秒後解僱,還會觸發hideLoading()函數,但加載視圖保留在屏幕上。

有誰知道,爲什麼會發生這種情況?

+0

你確定'update'被觸發嗎?你把斷點或檢查日誌? – Shubhank

回答

4
SwiftLoading().hideLoading() 

這行創建一個新SwiftLoading,然後隱藏了一個,而不是現有的。

當你第一次創建SwiftLoading,你應該把它分配給一個實例變量,以便以後可以將其隱藏:

let loading = SwiftLoading() //in your class, as an instance variable 

以開始加載對象:

loading.showLoading() 

要隱藏加載object:

loading.hideLoading() 
+0

由於它是從定時器發射的,它可能需要dispatch_async,因爲它不在主線程上。 – ryantxr

+0

@ryantxr'NSTimer'使用運行循環,因此它將在主線程中調用。你可能在想'dispatch_after'。 – NobodyNada

+0

@ NobodyNada:哇,解決了我的問題!不,它會正確啓動,非常感謝! – Manuel