我在2周内遇到了问题
我有一个UILabel,它在我的视图中显示了soundPlayer当前持续时间。我使用UIPageViewController,因此用户可以像整本书一样浏览整个页面(我的视图)。但是当另一个视图控制器的一部分出现时,标签不会显示当前进度。(因为这是视图控制器的新实例)。
如何让这个UILabel保持静态?我的意思是ViewController的所有实例都可以访问一个UIlabel,所以它们只更新一个标签
我不能使用singeleton设计模式,因为UIPageViewController需要至少2个我的视图控制器实例
每当viewcontroller的新内容创建时,都不会分配soundPlayer。我该如何解决这个难题?
你可以在天气预报应用中看到我的问题的一个例子。见下图:
答案 0 :(得分:1)
我应该做的唯一改变是创建静态AVAudioPlayer
静态AVAudioPlayer * soundPlayer;
soundPalyer是静态的,所以这个类的所有实例对象都有一个。
并在ViewDidLoad方法中:
if (!soundPlayer) {
soundPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundURL error:&error];
}
所以当你从一个viewController导航到另一个viewController时,soundPlayer不会再次初始化并继续播放。
多数民众赞成。