0

運が悪いのにさまざまなテーブルビューを表示するナビゲーションベースの機能を取得しようとしています。基本的に、に使用されるビューinitWithRootViewControllerは正しく表示されていませんが、ナビゲーションバーは正しく表示されています。with階層の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];

これは次の結果になります(ナビゲーションバーの上にギャップがある理由もわかりません):

ここに画像の説明を入力してください

最後の行から2番目のコメントを外す[controller.view addSubview:incidentTableViewController.view];と、必要に応じてナビゲーションバーを差し引いた結果が得られます。

ここに画像の説明を入力してください

私が達成したいのは、ナビゲーションバー付きの2番目の画像を用意することです。アイデアはありますか?

4

4 に答える 4

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 に答える
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

なぜあなたはこれをやっている?

[controller.navigationController setNavigationBarHidden:YES];

ところで、appDelegate の appdidfinishlaunching で、次のようにします。

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 がある場合は、incidentTableViewController をナビゲーション スタックにプッシュするか、incidentTableViewController をモーダルに提示する必要があります。

于 2012-07-31T14:44:19.987 に答える
0

プロジェクトのロジックを変更する必要があります。新しいタブ プロジェクトを開始し、didFinishLaunchingWithOptions メソッドを変更できます。ここでは、2 つのタブの例を示します。1 つのタブにはサンプル ビューがあり、もう 1 つのタブにはツールバーがあります。

- (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 に答える