我可以将UIView定义为Objective-C中的变量吗?

时间:2009-10-02 01:26:40

标签: objective-c variables uiview

根据我读过的文件,他们总是表明我应该在课堂上定义一个子视图。像这样:

@interface PolygonView : UIView.

我必须继承UIView。

我可以在从NSObject继承的类中定义UIView类型的变量吗?之后,我从该变量建立到UIView的连接,UIView在Interface Builder中定义。 问题是我无法覆盖 - (void)drawRect:(CGRect)rect

2 个答案:

答案 0 :(得分:2)

一般来说,你会做这样的事情

@interface MyView : UIView {
// Declare IBOutlets here if you wish or other instance variables you may need
}
@end

@implementation MyView

- (void)drawRect:(CGRect)rect {
// Drawing stuff
}

然后在Interface Builder中创建一个视图(通常通过创建一个View XIB或将一个Custom UIView对象拖到XIB中的另一个UIView上,然后将其作为子视图),然后在Inspector窗格中,将其Class设置为MyView。然后,您可以连接您在MyView界面声明中定义的任何IBOutlet。

答案 1 :(得分:0)

是的,你可以在一个指向UIView的普通NSObject子类中定义一个变量。但是如果你这样做,当然你不能覆盖drawRect: - 该对象只是对UIView的引用,它本身不是视图。这很像你可以有一个int变量,但这并不意味着包含该变量的对象是一个int。

如果要覆盖视图的绘图,则需要创建视图。您仍然可以从外部拥有一个与UIView子类交互的单独类。