0

我正在尝试获得基于导航的功能来显示不同的表格视图,但没有运气。本质上,用于的视图initWithRootViewController没有正确显示,但导航栏是。这是with hierarchy -> ->viewDidLoad方法中的代码:TimerViewControllerAppDelegateViewControllerTimerViewController

incidentTableViewController = [[IncidentTableViewController alloc] initWithStyle:UITableViewStyleGrouped];
    [incidentTableViewController.tableView.backgroundView setBackgroundColor:[UIColor colorWithRed:167.0/255.0 green:169.0/255.0 blue:172.0/255.0 alpha:1.0]];
    [incidentTableViewController.view setFrame:CGRectMake(0, 0, 268, 423)];
    [incidentTableViewController.tableView showsVerticalScrollIndicator];
    [incidentTableViewController setTitle:@"Incidents"];
    [incidentTableViewController.navigationController setNavigationBarHidden:NO];
    UINavigationController *controller = [[UINavigationController alloc] initWithRootViewController:incidentTableViewController];
    [controller.view setFrame:CGRectMake(268, 0, 268, 423)];
    [controller.view setBackgroundColor:[UIColor clearColor]];
    [controller.navigationController setNavigationBarHidden:YES];
    //[controller.view addSubview:incidentTableViewController.view];
    [self.view addSubview:controller.view];

这导致(我不确定为什么导航栏上方也有间隙):

在此处输入图像描述

如果我取消注释倒数第二行[controller.view addSubview:incidentTableViewController.view];,我会得到这个结果,这是根据需要减去导航栏:

在此处输入图像描述

我想要实现的是第二个带有导航栏的图像,有什么想法吗?

4

4 回答 4

0

你为什么做这个?

[controller.navigationController setNavigationBarHidden:YES];

顺便说一句,在你的 appdidfinishlaunching 你的 appDelegate 中这样做:

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

incidentTableViewController = [[IncidentTableViewController alloc] initWithStyle:UITableViewStyleGrouped];

[incidentTableViewController.tableView.backgroundView setBackgroundColor:[UIColor colorWithRed:167.0/255.0 green:169.0/255.0 blue:172.0/255.0 alpha:1.0]];
[incidentTableViewController.view setFrame:CGRectMake(0, 0, 268, 423)];
[incidentTableViewController.tableView showsVerticalScrollIndicator];
[incidentTableViewController setTitle:@"Incidents"];
[incidentTableViewController.navigationController setNavigationBarHidden:NO];
UINavigationController *controller = [[UINavigationController alloc] initWithRootViewController:incidentTableViewController];
[controller.view setFrame:CGRectMake(268, 0, 268, 423)];
[controller.view setBackgroundColor:[UIColor clearColor]];
self.window.rootViewController = incidentTableViewController;

[self.window makeKeyAndVisible];

如果您的窗口有一个 rootViewcontroller,那么您应该将事件表视图控制器推送到导航堆栈或以模态方式显示事件表视图控制器

于 2012-07-31T14:44:19.987 回答
0

您必须更改项目的逻辑。您可以开始一个新的选项卡项目并修改 didFinishLaunchingWithOptions 方法 这里我展示了带有 2 个选项卡的示例,一个带有示例视图的选项卡,另一个带有工具栏的选项卡:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    //view controller for 1st tab
    UIViewController * viewController1 = [[FirstViewController alloc] initWithNibName:@"FirstViewController_iPhone" bundle:nil];

    //your view controller with bar for the 2d tab
    IncidentTableViewController *incidentTableViewController = [[IncidentTableViewController alloc] initWithStyle:UITableViewStyleGrouped];
    [incidentTableViewController.tableView.backgroundView setBackgroundColor:[UIColor colorWithRed:167.0/255.0 green:169.0/255.0 blue:172.0/255.0 alpha:1.0]];
    [incidentTableViewController.tableView showsVerticalScrollIndicator];
    [incidentTableViewController setTitle:@"Incidents"];
    UINavigationController *controller = [[UINavigationController alloc] initWithRootViewController:incidentTableViewController];

    self.tabBarController = [[UITabBarController alloc] init];
    self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, controller, nil];
    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];
    return YES;
}
于 2012-07-31T14:48:04.807 回答
0

UINavigationController 没有你自定义的视图。

 [self.view addSubview:controller.view];

--->

 [self presentModalViewController:controller animated:YES];

或者

[self presentViewController:controller animated:YES completion:^{}];
于 2012-07-31T14:50:02.607 回答
0

通过使用以导航控制器初始化的作为其视图控制器修复了该问题UISplitViewController,工作代码如下:

incidentTableViewController = [[IncidentTableViewController alloc] initWithStyle:UITableViewStyleGrouped];
    UINavigationController *controller = [[UINavigationController alloc] initWithRootViewController:incidentTableViewController];
    incidentTableViewController.title = @"Incidents";
    splitViewController = [[UISplitViewController alloc] init];
    splitViewController.viewControllers = [NSArray arrayWithObjects:controller, nil];
    splitViewController.delegate = (id)incidentTableViewController;
    splitViewController.view.frame = CGRectMake(268, 0, 268, 423);
    [self.view addSubview:splitViewController.view];

在此处输入图像描述

于 2012-08-01T08:36:43.567 回答