在使用我的应用程序期间,用户应该能够启动,停止,转发背景音乐。 (跨越几个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中执行此操作?
答案 0 :(得分:6)
如果你的单身MusicPlayer正在播放音乐,那么当视图改变时不应该中断它。而不是为每个视图控制器创建音乐控件,您可以将音乐控件视图添加为窗口的子视图,并确保它始终位于其他所有视图之上。
<强>更新强> 在您的应用程序委托中,您通常需要一些代码来设置主视图(即applicationDidFinishLaunching方法)。我假设您有一个主导航或标签控制器,您可以在其中执行其他所有操作。因此,在将其视图添加到窗口后,创建并添加音乐播放器控制器视图并将其添加为窗口的子视图。只要您不向窗口添加其他视图,它就会保持在最顶层(如果这样做,您只需将音乐控件移回顶部)。
我会使用单独的MusicPlayerController视图控制器,它拥有音乐播放器控件视图。这样,其他视图控制器可以轻松显示或隐藏控件。
答案 1 :(得分:0)
如果您使用容器视图控制器(例如UINavigationController),那么您可以让所有视图控制器在彼此之间切换,并且在容器顶部可以添加您的MusicPlayer控件(最简单的方法是使它具有相同的功能)父作为导航控制器),这样它只创建一次,它不依赖于它下面显示的视图。
答案 2 :(得分:0)
你不能:How to add button to UINavigationController
“在UIViewController上添加UIbarButtonItem,而不是在UINavigationController上。导航控制器显示顶部viewVontroller的导航项,而不是它自己。”