【发布时间】:2014-06-05 04:12:52
【问题描述】:
我有一个 UIViewController,它有一个小的可滚动窗口,我在其中放置了一个名为“TreeView”的自定义 UIView。 TreeView 是空白的,但具有特定树的子类。在我的代码中,在 viewDidLoad 中,我正在执行以下操作:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
CGRect treeFrame = self.treeView.frame;
NSLog(@"passing tree frame of origin %f %f, size: %f, %f", treeFrame.origin.x, treeFrame.origin.y, treeFrame.size.height, treeFrame.size.width);
self.treeView = [[GelbMotiveView alloc] initWithFrame:treeFrame];
}
然后,在我的测试孩子中,我加载它的 .xib 文件(成功)并看到 UIViews 和子视图被添加到孩子。但是,即使我调用 setNeedsDisplay,这些视图也不会呈现。相反,原始的 TreeView 被渲染(我给了它一个红色背景,所以我肯定知道)。我可以在测试子类的 drawRect 中放置一个断点,并且它永远不会被调用。
我做错了什么?
我只是在做一些完全奇怪的事情吗? UIView 的子类不应该有自己的子类吗?有没有更好的方法以编程方式换出 UIViewController 屏幕的一小部分?我的意图是让 TreeView 的子级渲染树/图形并使其变得难以处理(节点的按钮等)。有没有更好的方法来做到这一点?
【问题讨论】:
标签: ios objective-c uiview interface-builder