根据我读过的文件,他们总是表明我应该在课堂上定义一个子视图。像这样:
@interface PolygonView : UIView.
我必须继承UIView。
我可以在从NSObject继承的类中定义UIView类型的变量吗?之后,我从该变量建立到UIView的连接,UIView在Interface Builder中定义。
问题是我无法覆盖 - (void)drawRect:(CGRect)rect
答案 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子类交互的单独类。