我有一个名为ViewController的视图控制器。
但是,我在显示ThirdViewController时遇到问题。当我点击SecondViewController中的按钮时,它会抛出一个错误:
警告:尝试在...上显示...视图不在窗口层次结构中!
我去过很多其他网站和帖子来解决这个问题,但似乎找不到可行的解决方案。我已经实现了很多解决方案,但似乎都没有。
这是我的代码:
- (void)secondaryView:(UIView *)secondaryView
{
UIView *theView = secondaryView;
UIViewController *viewController = [[UIViewController alloc] init];
viewController.view.frame = [UIScreen mainScreen].bounds;
[viewController.view addSubview:theView];
viewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentViewController:viewController animated:YES completion:nil];
}
secondaryView
是我正在应用程序中的其他地方构建的UIView。我将它添加到viewController然后呈现viewController
。
有没有办法动态创建UIViewControllers,为每个添加UIView,并将它们添加到窗口层次结构中?
答案 0 :(得分:1)
如果您可以在ViewControllers中使用导航,则可以尝试以下代码
在你调用firstViewController的地方,
-(void)callFirst
{
FirstViewController *first = [FirstViewController alloc] init];
UINavigationController *navigationController = [UINavigationController alloc] initWithRootViewController:first];
navigationController.modalPresentaionStyle = UIModalPresenationFormSheet;
[self presentModalViewController:navigationController animated:YES];
}
在FirstViewController按钮操作中,您可以编写
-(void)callSec
{
SecondViewController *sec = [SecondViewController alloc] init];
[self.NavigationController pushViewController:sec animated:YES];
}
在SecondViewController中你可以做同样的事情
-(void)callThird
{
ThirdViewController *third = [ThirdViewController alloc] init];
[self.NavigationController pushViewController:third animated:YES];
}
试试这个......在这些ViewControllers中,你可以做任何想要满足要求的编码,比如
-(void)viewDidLoad
{
UIView *newView = [[UIView alloc] initWithFrame:CGRectMake(20,20,400,400)];
newView.backGroundColor = [UIColor redColor];
[self.view addSubView:newView];
}