0

他の 2 つの UIViewController を含むように UIViewController を作成しました。UINavigationBar で UISegment を使用してやりたいことは、両方のビューを切り替えることです。ユーザーが終了したら、[完了] をクリックすると、RootViewController に戻ります。UIViewControllers が画面全体のサイズを取ることを除いて、これが機能するようになったので、上部は UINavigationBar で覆われます。UINavigationBar の下のスペースに適応しません。私は成功せずにさまざまなテクニックを試してきました。

私はすでに ChildUIViewControllers で試しましたが成功しませんでした

self.edgesForExtendedLayout = UIRectEdgeNone;

これが私のコードです:

RootViewController がコンテナを呼び出す

ContainerController *controller = [[ContainerController alloc] init]
[self.navigationController pushViewController:controller animated:YES];

コンテナ コード

- (void)viewDidLoad {

[super viewDidLoad];
UIViewController *vc = [self getCurrentViewController]; // Returns Current ViewController to Display
[self addChildViewController:vc];
vc.view.frame = self.view.bounds;
[self.view addSubview:vc.view];

self.currentViewController = vc;
}

-(UIViewController *)getCurrentViewController{
UIViewController *vc;
switch ([[NSUserDefaults standardUserDefaults] integerForKey:@"currentView"]) {
    case kView1:{
        vc = (ViewController1 *)[[ViewController1 alloc] init];
    }break;
    case kView2:{
        vc = (ViewController2 *)[[ViewController2 alloc] init];
    }break;
}
return vc;
}

- (void)segmentedControlIndexChanged:(id)sender{

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:[NSNumber numberWithInt:[sender selectedSegmentIndex]] forKey:@"currentView"];
[userDefaults synchronize];
UIViewController *vc = [self getCurrentViewController];

[self addChildViewController:vc];
[self transitionFromViewController:self.currentViewController toViewController:vc duration:0.5 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{
    [self.currentViewController.view removeFromSuperview];
    vc.view.frame = self.view.bounds;
    [self.view addSubview:vc.view];
} completion:^(BOOL finished) {
    [vc didMoveToParentViewController:self];
    [self.currentViewController removeFromParentViewController];
    self.currentViewController = vc;
}];
self.navigationItem.title = vc.title;
}

誰が問題が何であるか知っていますか?ありがとう。

4

1 に答える 1