我可以在子视图中添加子视图吗?

时间:2013-06-23 22:45:19

标签: ios objective-c uiview addsubview

我使用[self.view addSubview:newView]在ViewController中添加了一个视图。 newView是一个UIView类型的对象。 在newView中我添加了使用[self addSubview:polyg];添加了一些视图。 Polygs也继承自UIView。但他们永远不会被吸引。永远不会调用drawRect:(CGRect)rect

我是iOS新手,不知道我做错了什么。

这可能与我在向newView添加视图时没有使用self.view这一事实有关。我甚至无法在newView中使用self.view

我该如何做到这一点?

编辑: 当我创建这些polyg对象时,我正在使用initWithFrame并发送newView的框架,如下所示:[[Polyg alloc] initWithFrame:self.frame]; 这可能是原因吗? Polyg将是一个可移动且可调整大小的多边形,所以我认为每个都应该可以在整个屏幕上绘制。

编辑: 我在newView中创建了一个名为touchX:Y的方法,只要我在屏幕上触摸手指,就会从viewController调用它。在里面我写了这个:NSLog(@“subview =%i”,self.subviews.count);.每当我触摸屏幕时,我都会在控制台上看到:subview = 89所以我很确定子视图已添加到newView。

我尝试将其添加到相同的touchX:Y方法:

        for (UIView* subview in self.subviews) {
            [subview setNeedsDisplay];
        }

但子视图'drawRect永远不会被调用。

1 个答案:

答案 0 :(得分:1)

最有可能的是,newView要么完全不在屏幕上,要么大小为(0,0)。在添加ployg子视图之前,使用调试器打印出newView的框架。