2011-10-19 55 views
0

我一直在努力创建一个底部有选项卡的应用程序,但能够通过TabBar应用程序显示的笔尖上自己的链接来切换视图。XCode TabBar应用程序 - 多个视图?

我一直在试图找到一个这样的例子,但xcode 4.2(无论是在ios5.0或更早版本)不创建mainwindow.xib,所以我不得不找到一种方法来创建这个programmataiically如下:

#import "AppDelegate.h" 

#import "HomeViewController.h" 
#import "ViewListViewController.h" 
#import "ShareViewController.h" 
#import "FriendsViewController.h" 
#import "SettingsViewController.h" 

@implementation AppDelegate 

@synthesize window = _window; 
@synthesize tabBarController = _tabBarController; 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    // Override point for customization after application launch. 
    UIViewController *homeViewController = [[HomeViewController alloc] initWithNibName:@"HomeViewController" bundle:nil]; 
    UIViewController *viewListViewController = [[ViewListViewController alloc] initWithNibName:@"ViewListViewController" bundle:nil]; 
    UIViewController *shareViewController = [[ShareViewController alloc] initWithNibName:@"ShareViewController" bundle:nil]; 
    UIViewController *friendsViewController = [[FriendsViewController alloc] initWithNibName:@"FriendsViewController" bundle:nil]; 
    UIViewController *settingsViewController = [[SettingsViewController alloc] initWithNibName:@"SettingsViewController" bundle:nil]; 
    self.tabBarController = [[UITabBarController alloc] init]; 
    [self.tabBarController setDelegate:self]; 
    self.tabBarController.viewControllers = [NSArray arrayWithObjects:homeViewController, viewListViewController, shareViewController, friendsViewController, settingsViewController, nil]; 
    self.window.rootViewController = self.tabBarController; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 

此代码在我的AppDelegate.m工作正常,我可以完全切换标签。我遇到的问题是,我将添加图形到页面中,并将它们用作按钮在视图之间切换,以便从数据库添加/编辑/删除数据(单独的问题,我将不得不学习下一步操作)。

我发现的大多数例子都是通过tabBar或者带有UIViews的uiNavigation在应用之间切换来启动应用程序。我还没有找到一个能够清楚展示如何去做我期望做的事情的例子。我的做法是错误的创建tabBar应用程序作为我的基本模板,或者可以这样做?每个选项卡可能有多个执行功能的视图,但我需要能够在tabBar框架内创建和切换它们。

在此先感谢,

银虎

- 更新: -

后读了一下我现在认为aUINavigationController是不是我所期待的。我需要的是一种创建自定义按钮的方式,以允许我切换视图,因为我将在内容中使用的按钮既可以是图形也可以是透明的图形背景。是否可以使用自定义按钮来推送新视图,同时始终保持tabBar可见?我的结构将是如下

Home 
    Add 
    Edit 
    delete 

ViewList - Single page to view list 

Share - Single page to send emails/invites 

Friends 
    Add 
    Edit 
    Delete 

Settings - Single page for app settings/preferences 

所以基本上我只真的有我会在哪里推新观点的选项卡2,但UINavigationController的似乎并没有因为我不适合我使用的方法使用顶部的单条切换视图。

回答

1

UINavigationControllerUITabBarController都是视图控制器的控制器。在这个功能中,它们以相同的方式工作。但是有一些差异。以此为指导:

UINavigationController:在这里,您通常在顶部有一个导航栏。您将其他视图控制器“推”到“堆栈”上,并且导航控制器负责处理顶部的所有按钮以及动画等等。通常(但并非总是),这通过表视图实现。

的UITabBarController:在这里,你必须在任何时候底部的标签栏,所以这应该只意义,如果有事情,用户通常必须访问无论在哪里,她是在视图层次。看一个典型的例子闹钟应用程序。

组合:如果您想将两者结合使用,请从标签栏控制器开始。然后,您可以将单独的导航控制器分配给一个或多个选项卡栏项目。导航控制器反过来管理他们的视图控制器。确保您的用户界面不会因屏幕顶部和底部的导航控件而变得混乱。看一个典型的例子iTunes应用程序。

顺便说一句,如果一个视图需要更多空间(例如,在iPod应用程序中,标签栏在“正在播放”时被工具栏替换),您可以随时使这些控件消失。

+0

谢谢你的详细说明。阅读它后,我发现使用UINavigationController可能不是我所需要的。我真正需要的是一个自定义按钮,可以让我切换视图。我会更新我的原始描述,更好地了解我在找什么。 – Silvertiger

0

This示例结合标签栏和导航栏开始与标签栏控制器。我发现它非常有用。这是你想要的?

相关问题