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

Ios 我可以在子视图中添加子视图吗?,ios,objective-c,uiview,addsubview,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.

我使用
[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。

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

您可以根据需要添加嵌套子视图。请记住,视图的框架始终相对于其直接的超级视图(父视图)。是的,您可以将子视图添加到子视图中。如果确实调用了方法
DrawRect
,则不会调用它。方法的名称必须是
drawRect:
。它必须正确大写,并且必须采用一个
CGRect
参数。如果您确实调用了它
drawRect:
,您怎么知道它没有被调用?-(void)drawRect:(CGRect)rect{//Drawing code NSLog(@“drawRect!”);}drawRect永远不会出现在控制台上。(使用正确的方法名称编辑问题)如果newView是一个视图,则它没有名为view的属性。视图控制器有它。它是一个视图,我不能在其中使用self.View。这就是问题所在吗?我可以将子视图添加到viewController,但无法将子视图添加到子视图?我添加了断点,但找不到似乎是问题所在的帧(尝试了搜索框)<代码>NSLog(@“帧大小x/y=%f/%f”,self.frame.size.width,self.frame.size.height)导致控制台上的帧大小x/y=0.000000/0.000000
。我像这样创建了newView:在调试器中,键入以下内容:“po self.frame”use debugger=添加断点并检查控制台区域旁边的变量区域?有两个区域。使用显示应用程序日志的日志。