问题描述
- 添加UIViewController 的问题
-
需要添加一个UIViewController 类到其他类中作为子视图。myEventsView = [[EventNameViewController alloc]initWithNibName:@"EventNameViewController" bundle:nil]; [myEventsView.view setFrame:CGRectMake(0, 39, 320, 400)]; [self.view addSubview:myEventsView.view];
添加成功了,但是按钮动作出问题,导航到其他视图控制器的完全没用。这些动作的方法已经调用了,但是没有之心。不知道为什么会这样?谢谢
解决方案
问题没有表达明白.不知道你是不是这个意思:
你将EventNameViewController的view 作为subview 添加到父视图控制器中去.你想在EventNameViewController中的button来导航视图到另一个控制器中去,但你发现并没有按你预期的效果执行?
如果是这样的话, 你思考一下问题出在哪里? 为什么EventNameViewController不能导航到下一个视图?
其实原因很简单,主要是你的EventNameViewController 并不在导航控制器栈中,在导航控制器栈中的是它的父视图, 这里需要你在EventNameViewController中先访问到父视图再通过父视图来导航到下一个控制器.这是思路.
这里有一个解决方案:
在EventNameVIewcontroller 的Button 的IBAction中使用下面的代码来访问到父视图控制器
-(IBAction)navigateNextView {
UIViewController *superController=(UIViewController *)[[[self.view superView] superView] nextResponder];
UIViewController *nextController=......
[superController.navigationController pushViewController:nextController animated:YES];
}
解决方案二:
EventNameViewController 不是被push到navigation viewcontroller栈中的 所以
它的 self.navigationController是nil的, 所以你在EventNameViewController 不能用 self.navigationController pushViewController来跳屏,你应该这样用
myEventsView = [[EventNameViewController alloc]initWithNibName:@"EventNameViewController" bundle:nil];
[myEventsView.view setFrame:CGRectMake(0, 39, 320, 400)];
[self addChildViewController:myEventsView];
EventNameViewController里跳屏这样写
//EventNameViewController里跳屏地方用这
[self.parentViewController.navigationController pushViewController: animated:];
时间: 2024-10-28 18:09:45