多个ViewControllers(containerView?childView?viewController实例?)

Sco*_*ott 3 uiviewcontroller viewcontroller ios

我需要在另一个顶部添加一个新视图(w/ViewController).用户暂时与此新视图交互,然后我想删除它.在较旧版本的Xcode中,我能够将其添加为子视图.我现在收到一个EXC_BAD_ACCESS错误.

我不希望将添加的视图作为模态.我需要通过添加的视图查看原始背景.我已经阅读了很多关于新的自定义containerViews,addChildView和presentView的内容.我看不出其中任何一个都是明确的答案.

这是以前工作的旧代码 - 主ViewController中的Action:

-(IBAction)showWhiteView:(id)sender
{
    WhiteViewController *whiteView = [[WhiteViewController alloc] initWithNibName:@"WhiteViewController" bundle:nil];
    [self.view addSubview:whiteView.view];
}  
Run Code Online (Sandbox Code Playgroud)

在添加的视图中删除它的操作:

-(IBAction)removeView:(id)sender
{
    [self.view removeFromSuperview];
}
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

也许一个VISUAL EXAMPLE将有助于解释 - 假设主视图是海洋,动画波浪和云移动由MainView控制器控制.用户点击了一些东西,我想在主视图中添加一条船(WhiteView).我希望用户与船进行交互:点击这里帆打开,点击那里锚点等等(需要WhiteViewController的方法)最终我想从海洋中移除船.

谢谢Tim - 新增代码:

-(IBAction)showWhiteView:(id)sender
{   WhiteViewController *whiteView = [[WhiteViewController alloc] initWithNibName:@"WhiteViewController" bundle:nil];
    [self addChildViewController:whiteView];
    [whiteView didMoveToParentViewController:self];
    [self.view addSubview:whiteView.view];   }
Run Code Online (Sandbox Code Playgroud)

并在WhiteViewController中删除:

-(IBAction)removeView:(id)sender
{    [self.view removeFromSuperview];
     [self removeFromParentViewController];    }
Run Code Online (Sandbox Code Playgroud)

我期待着有关改善这一点的任何进一步建议.谢谢大家!

tim*_*man 5

请参阅此处有关UIViewController包含的答案.我在这里放了一个关于UIViewController包含的示例项目:http://github.com/toolmanGitHub/stackedViewControllers

希望这有助于.`

蒂姆