在我的应用程序使用期间,用户应该能够启动,停止,转发背景音乐。(跨越几个UIViewControllers)。为此,我将我的MusicPlayer变成了单例(NSObject)。如果我在每个视图中为自己创建控件,它就能工作,但我想要的基本上是一个视图,它处理音乐播放器类,并且一直是存在的。用户还应该能够“隐藏”和“显示”视图,通过向左或向右滑动视图。因此,如果它是隐藏的,并且我改变了我的视图控制器,那么它也应该隐藏在新的视图控制器中,音乐也不应该被中断。
我在我的家庭视图控制器中尝试了这个,它起作用了:
UIView * playerView = [[UIView alloc] initWithFrame:CGRectMake(0, 300, self.view.bounds.size.width, 44)];
playerView.backgroundColor = [UIColor redColor];
[[[[UIApplication sharedApplication] delegate] window] addSubview:playerView];在ApplicationDelegate中有办法做到这一点吗?
发布于 2012-03-23 15:50:03
如果您的单例MusicPlayer正在播放音乐,则在视图更改时不应中断音乐。而不是为每个视图控制器创建音乐控件,您可以添加音乐控件视图作为窗口的子视图,并确保它保持在所有其他视图之上。
更新:在您的应用程序委托中,通常有一些代码来设置主视图(即applicationDidFinishLaunching方法)。我假设您有一个主导航或选项卡控制器,您可以在其中执行其他所有操作。因此,在将其视图添加到窗口后,创建并添加您的音乐播放器控制器视图,并将其作为窗口的子视图添加。只要您不向窗口添加其他视图(如果您添加了,您只需将音乐控件移回顶部),它将保持在顶部。
我会使用一个单例MusicPlayerController视图控制器,它拥有音乐播放器控件视图。这样,其他视图控制器可以轻松地显示或隐藏控件。
发布于 2012-03-23 15:55:52
如果使用容器视图控制器(例如UINavigationController),那么所有视图控制器都会在彼此之间切换,并且可以在容器的顶部添加MusicPlayer控件(最简单的方法是让它与导航控制器具有相同的父控件),这种方式只创建一次视图,而不取决于它下面显示的视图。
发布于 2014-03-05 00:11:42
你不能:How to add button to UINavigationController
“将UIbarButtonItem添加到UIViewController上,而不是在UINavigationController上。导航控制器显示顶部viewVontroller的导航项,而不是它本身。”
https://stackoverflow.com/questions/9842221
复制相似问题