2013-02-21 51 views
0

我陷入了一個問題2周。
我有一個UILabel,它顯示了我的視圖中的soundPlayer當前持續時間。我使用UIPageViewController,以便用戶像真正的書一樣瀏覽整個頁面(我的視圖)。但是當另一個視圖控制器的部分出現時,標籤不會顯示當前的進度(因爲這是視圖控制器的新實例)。
我該如何使這個UILabel是靜態的?我的意思是所有的ViewController實例都可以訪問一個UIlabel,所以它們都只是更新一個標籤。
我不能使用singeleton設計模式,因爲UIPageViewController需要我的視圖控制器的至少2個實例。
聲音播放器不會被分配每次新的視圖控制器insatnce正在創建。我應該如何解決這個困境?如何在我的UIViewController中使用靜態變量

你可以在天氣實況應用程序中看到我的問題的一個例子。看到下面的圖片: enter image description here

下載示例代碼: http://upload.ugm.ac.id/300paging.zip

回答

1

我應該做的唯一的變化是創建一個靜態AVAudioPlayer

靜態AVAudioPlayer *聲音播放;

soundPalyer是靜態的,所以這個類的所有實例對象都有一個。

和viewDidLoad方法:

if (!soundPlayer) { 
     soundPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundURL error:&error]; 
    } 

所以當你從一個的viewController導航到另一個的viewController,聲音播放不會重新初始化,並且繼續播放。
多數民衆贊成在所有。