首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在UIView中添加了UIViewController,给出了麻烦

在UIView中添加了UIViewController,给出了麻烦
EN

Stack Overflow用户
提问于 2013-05-02 15:55:42
回答 3查看 63关注 0票数 0

我想将一个UIViewController类作为子视图添加到现有的类中,所以我使用了以下代码。

代码语言:javascript
复制
myEventsView = [[EventNameViewController alloc]initWithNibName:@"EventNameViewController" bundle:nil];
[myEventsView.view setFrame:CGRectMake(0, 39, 320, 400)];
[self.view addSubview:myEventsView.view];

它被成功添加,但问题出在按钮操作上,那些必须导航到其他视图控制器的操作不起作用。那些action方法被调用了,但是action没有执行,不知道为什么,请对上面的操作进行指导。

提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-02 16:25:18

试一试

代码语言:javascript
复制
myEventsView = [[EventNameViewController alloc]initWithNibName:@"EventNameViewController" bundle:nil];
[myEventsView.view setFrame:CGRectMake(0, 39, 320, 400)];
[myEventsView willMoveToParentViewController:self];
[self.view addSubview:myEventsView.view];
[self addChildViewController:myEventsView];
[myEventsView didMoveToParentViewController:self];
票数 2
EN

Stack Overflow用户

发布于 2013-05-02 16:07:12

docs

您创建的每个自定义视图控制器对象都负责管理单个视图层次结构中的所有视图。

您要做的是将一个视图控制器的视图添加为另一个视图控制器视图的子视图,从而混合两个视图层次结构。这会给你带来你已经经历过的问题。看看Carbon Emitter的Abusing UIViewCtrollers文章,它给出了一个彻底的解释和一个替代方案。

更新

正如上面的正确答案所建议的,有一种方法可以让一个UIViewController充当另一个容器。从Implementing a Container View Controller (UIViewController类引用):

自定义UIViewController子类也可以充当容器视图控制器。容器视图控制器管理它拥有的其他视图控制器(也称为它的子视图控制器)的内容表示。子视图可以按原样表示,也可以与容器视图控制器拥有的视图结合使用。

但是,这是iOS >= 5的一个特性,所以对于运行iOS版本低于5的应用程序,我的答案仍然是正确的。

票数 0
EN

Stack Overflow用户

发布于 2013-05-02 16:29:19

曼肯是对的。您不能将myEventsView.view作为子视图添加到self.view,因为myEventsView.view由其自己的视图控制器控制。

您可能只想添加一个新视图(即,而不是由另一个视图控制器控制的)作为self.view的子视图。那么,为什么不在没有新的视图控制器的情况下实例化这样的视图呢?

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

https://stackoverflow.com/questions/16333002

复制
相关文章

相似问题

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