根據我閱讀的文檔,他們總是表明我應該在課堂上定義一個子視圖。像這樣:我可以在Objective-C中將UIView定義爲變量嗎?
@interface PolygonView : UIView.
我必須從UIView繼承。
我可以在繼承自NSObject的類中定義一個UIView類型的變量嗎?之後,我將該變量連接到Interface Interface中定義的UIView。 的問題是,我不能重寫 - (void)drawRect:(CGRect)rect
根據我閱讀的文檔,他們總是表明我應該在課堂上定義一個子視圖。像這樣:我可以在Objective-C中將UIView定義爲變量嗎?
@interface PolygonView : UIView.
我必須從UIView繼承。
我可以在繼承自NSObject的類中定義一個UIView類型的變量嗎?之後,我將該變量連接到Interface Interface中定義的UIView。 的問題是,我不能重寫 - (void)drawRect:(CGRect)rect
是的,你可以在普通的NSObject子類中定義一個指向UIView的變量。但是,如果你這樣做,當然你不能覆蓋drawRect:
- 該對象只是一個UIView的引用,它不是一個視圖本身。這很像你可以有一個變量是一個int,但這並不意味着包含該變量的對象是一個int。
如果您想覆蓋視圖的繪圖,則需要創建視圖。你仍然可以有一個獨立的類,與外部的UIView子類進行交互。
通常你會做這樣的事情
@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中,創建一個視圖(通常通過進行查看廈門國際銀行或拖出一個自定義的UIView對象放到(好,進入)XIB中的另一個UIView,從而使其成爲子視圖),然後在Inspector窗格中將其類設置爲MyView。然後,您可以連接您在MyView界面聲明中定義的任何IBOutlet。
你有沒有不想繼承UIView的原因? UIViews沒有委託方法允許其他類定義視圖的繪圖。 – nall 2009-10-02 01:47:17
我只是認爲它很像Label,Slide等其他組件,我可以簡單地定義它們。我曾經這樣做過: CGRect frame = CGRectMake(100,100,140,21); \t [pogview initWithFrame:[frame]]; \t [pogview drawRect:frame]; – Khoa 2009-10-03 04:13:42