结合导航控制器和标签栏控制器

Posted

技术标签:

【中文标题】结合导航控制器和标签栏控制器【英文标题】:Combining Navigation Controller with Tab Bar Controller 【发布时间】:2012-12-23 22:13:25 【问题描述】:

正如我在标题中提到的,我想将Navigation Controller 添加到我已经拥有Tab Controller 的应用程序中。因此,尝试在page 上对员工进行类似的操作。无论如何,有些不对劲。 UINavigationController 正在寻找一个空白页面,即使有一个视图和一些库。

让我从头开始:

在我的AppDelegate 中,我正在设置这样的标签栏控制器:

@interface MYAppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) UITabBarController *tabBarController;

@end

这是.m文件:

@implementation MYAppDelegate

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

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    application.applicationSupportsShakeToEdit = YES;
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    UINavigationController *viewController1 = [[[MYMainViewController alloc] init] initWithNibName: @"MYMainViewController" bundle:nil];
    UIViewController *viewController2 = [[[MYPageViewController alloc] init] initWithNibName:@"MYPageViewController" bundle:nil];
    UIViewController *viewController3 = [[[MYSearchViewController alloc] init] initWithNibName:@"MYSearchViewController" bundle:nil];
    UIViewController *viewController4 = [[[MYPersonViewController alloc] init] initWithNibName:@"MYPersonViewController" bundle:nil];

    // Initialize tabBarController and add ViewControllers
    self.tabBarController = [[UITabBarController alloc] init];
    self.tabBarController.viewControllers = [NSArray arrayWithObjects: viewController1, viewController2, 
        viewController3, viewController4, nil];

    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];

    return YES;

然后,这里是 MYMainViewController 实现,它是 UINavigationController

- (void)viewDidLoad 
    [super viewDidLoad];
    NSLog(@"%@", [self navigationController]); // Logging null

我的 .xib 文件有一个 UINavigationController 并且其中有一个视图。尽管如此,当我使用该应用程序时,有空白页面和无标题导航栏。我做错了什么?

如果我可以看到视图的内容,我想使用后退按钮在两个视图控制器之间导航。

任何帮助或方法对我来说都很棒。

【问题讨论】:

【参考方案1】:

尝试从xib中删除导航控制器,使其只有视图控制器,然后以编程方式初始化导航控制器:

UIViewController *tmpViewController1 = [[[YourViewController alloc] init] initWithNibName:@"YourViewController" bundle:nil];
 UINavigationController *viewController1 =  [[UINavigationController alloc] initWithRootViewController:tmpViewController1];

【讨论】:

谢谢,但仍然没有任何改变。 20天后接受,错误是我的。类型错误。无论如何谢谢你。

以上是关于结合导航控制器和标签栏控制器的主要内容,如果未能解决你的问题,请参考以下文章

组合标签栏和导航栏控制器出现问题

导航和标签栏控制器未显示

导航控制器和标签栏控制器

同时使用导航控制器和标签栏

创建标签栏控制器和导航控制器

iOS MapView 位于导航栏、状态栏和标签栏控制器下