如何在我的UIViewController中使用静态变量

时间:2013-02-21 20:18:06

标签: static singleton uipageviewcontroller

我在2周内遇到了问题 我有一个UILabel,它在我的视图中显示了soundPlayer当前持续时间。我使用UIPageViewController,因此用户可以像整本书一样浏览整个页面(我的视图)。但是当另一个视图控制器的一部分出现时,标签不会显示当前进度。(因为这是视图控制器的新实例)。
如何让这个UILabel保持静态?我的意思是ViewController的所有实例都可以访问一个UIlabel,所以它们只更新一个标签 我不能使用singeleton设计模式,因为UIPageViewController需要至少2个我的视图控制器实例 每当viewcontroller的新内容创建时,都不会分配soundPlayer。我该如何解决这个难题?

你可以在天气预报应用中看到我的问题的一个例子。见下图: enter image description here

下载示例代码: http://upload.ugm.ac.id/300paging.zip

1 个答案:

答案 0 :(得分:1)

我应该做的唯一改变是创建静态AVAudioPlayer

静态AVAudioPlayer * soundPlayer;

soundPalyer是静态的,所以这个类的所有实例对象都有一个。

并在ViewDidLoad方法中:

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

所以当你从一个viewController导航到另一个viewController时,soundPlayer不会再次初始化并继续播放。
多数民众赞成。