首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >setView与ChildViewController

setView与ChildViewController
EN

Stack Overflow用户
提问于 2013-07-27 12:22:48
回答 2查看 1.6K关注 0票数 0

我有带子的ViewController,它很好,但是当我将根视图更改为另一个时,然后返回根视图:

代码语言:javascript
复制
-(void)showSearchResultView
{
    self.searchView.frame = self.view.frame;
    __rootView = self.view;
    [self setView:self.searchView];
}

-(void)hideSearchResultView
{
    if(__rootView) [self setView:__rootView];
    __rootView = nil;
}

我得到了例外:

代码语言:javascript
复制
Terminating app due to uncaught exception 'UIViewControllerHierarchyInconsistency', 
reason: 'child view controller:<SlideViewController> should have parent view controller:
<UINavigationController> but actual parent is:<MainViewController>'

使用子视图控制器更改根视图的正确方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-27 15:00:43

我找到了解决办法。只需删除子根视图并再次添加它。

代码语言:javascript
复制
-(void)showSearchResultView
{
    self.searchView.frame = self.view.frame;
    __rootView = self.view;
    [self setView:self.searchView];

    for(UIViewController* vc in self.childViewControllers){
        [vc.view removeFromSuperview];
    }
}

-(void)hideSearchResultView
{
    if(__rootView) [self setView:__rootView];
    __rootView = nil;

    for(UIViewController* vc in self.childViewControllers){
        vc.view.frame = self.view.bounds;
        [self.view addSubview:vc.view];
    }
} 
票数 0
EN

Stack Overflow用户

发布于 2013-07-27 14:04:31

要更改根视图,必须从导航堆栈中删除rootviewcontroller。比如:

NSMutablerray *控制器= self.navigationController视图控制器;

控制器removeObjectAtIndex:0;

它将删除rootviewController和名称方式,您可以添加新的视图控制器。

控制器addObjectAtIndex:0;

注意:-这个代码语法可能不正确,.this只是一种方法。

最新情况:-

代码语言:javascript
复制
NSMutableArray *viewControllers = [[NSMutableArray alloc]initWithArray:self.navigationController.viewControllers];

RootViewController *root = [[RootViewController alloc]initWithNibName:@"RootViewController" bundle:nil];

[viewControllers insertObject:root atIndex:0];
self.navigationController.viewControllers = viewControllers;

这样您就可以更改根视图。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17897785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档