2 u010025993 u010025993 于 2013.05.03 16:32 提问

添加UIViewController 的问题

需要添加一个UIViewController 类到其他类中作为子视图。

myEventsView = [[EventNameViewController alloc]initWithNibName:@"EventNameViewController" bundle:nil];
[myEventsView.view setFrame:CGRectMake(0, 39, 320, 400)];
[self.view addSubview:myEventsView.view];

添加成功了,但是按钮动作出问题,导航到其他视图控制器的完全没用。这些动作的方法已经调用了,但是没有之心。不知道为什么会这样?谢谢

2个回答

zhanglei5415
zhanglei5415   Rxr 2013.05.06 08:47
已采纳

问题没有表达明白.不知道你是不是这个意思:
你将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];
}
KindAzrael
KindAzrael   2013.05.07 00:04

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:];
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!