如何创建一个持久存储在所有其他视图和控制器中的视图?

时间:2010-03-21 20:37:42

标签: iphone objective-c model-view-controller user-interface

我想知道如何创建一个持久存储应用程序中所有视图和控制器的视图。与Soundcloud在iPhone应用程序中使用音乐播放器的方式类似(见图)。无论您在应用程序中的哪个位置,音乐播放器视图都位于工具栏下方的顶部。

alt text http://i1.soundcloud.com/screenshots-000000000025-akaqgr-t500x500.jpg

2 个答案:

答案 0 :(得分:2)

基本答案是在视图层次结构的顶部创建一个视图。

我们以上面基于标签视图的截图为例。假设应用程序的根视图控制器是名为UITabBarController的{​​{1}}的子类。

通常,您的应用程序委托将有一个类似于此的方法:

RootViewController

如果您希望视图只是“重叠”,那很简单。假设您希望“持久视图”高度为100像素并拉伸屏幕宽度。假设您已经为此视图创建了一个类,它被称为PeristentView。您的代码看起来像这样:

- (void)applicationDidFinishLaunching:(UIApplication *)application
{
    [window addSubview:rootViewController.view];
    [window makeKeyAndVisible];
}

此处的顺序很重要,因为您希望持久视图位于视图层次结构的下方,以便- (void)applicationDidFinishLaunching:(UIApplication *)application { [window addSubview:rootViewController.view]; PersistentView* persistentView = [[PersistentView alloc] initWithFrame:CGRectMake(0, 0, 320, 100)]; [window addSubview:persistentView]; [persistentView release]; [window makeKeyAndVisible]; } 的{​​{1}}先绘制,然后持久视图绘制第二个。

如果您希望持久性视图“按下”屏幕上的其余视图,则必须稍微更改一下。鉴于默认情况下,您告诉窗口将根视图控制器的整个视图添加为子视图,而您要执行的操作是调整rootViewController view的大小,以便它不会占用整个屏幕并重新定位其frame

rootViewController.view

我刚刚使用现有的基于标签栏的项目(使用普通的origin而不是创建PersistentView类来引导测试)来测试它,并且它工作正常。

答案 1 :(得分:0)

您可以将视图添加为主窗口的子视图,并将其放置在tabBarController视图的上方。然后它将始终可见。