2013-04-15 40 views
1

我有2個視圖名爲'AA'和'AB'(並且在不久的將來我會有更多:'AC','AD'等)。 現在在我的viewControllers中,我需要導入所有我的UIView子類並測試一些東西,以便知道我需要創建哪個子視圖並將其添加到視圖層次結構中。iOS - 如何根據屬性使用通用視圖繪製不同的視圖?

我的想法是創建一個名爲'A'的視圖,該視圖將確定需要繪製哪些子視圖,並將它的類更改爲可以是'AA'或'AB'的私有類。 但我不知道該怎麼做。

當然,我可以測試需要測試的內容,然後將新視圖添加爲子視圖,但是想法只有一個視圖,而不是視圖內的視圖。

謝謝您的回答

回答

2

可以使用State Design Pattern的變化來實現,其中一個對象需要在運行時配置其活動的系統。與其在視圖內創建視圖,您可以創建一個單一視圖,該視圖可以保存知道如何在視圖中繪製的東西列表,而不必將其視爲UIView對象。

下面是一個例子:

@interface ViewDraw 
-(void)drawInView; // the UIView caller can pass parameters here 
@end 
@interface ViewDrawA : ViewDraw 
-(void)drawInView; 
@end 
@interface ViewDrawB : ViewDraw 
-(void)drawInView; 
@end 
@interface ViewDrawC : ViewDraw 
-(void)drawInView; 
@end 

現在你ViewA類可以保持ViewDrawNSArray的對象,與視圖中繪製對象,它需要借鑑配置它,然後呼籲他們做繪圖。重新配置ViewDraw對象的列表將會影響ViewA在運行時更改其行爲。

+0

和ViewDraw是NSObject或UIView的子類? – Dabrut

+0

@Dave它是'NSObject'的一個子類。 – dasblinkenlight

+0

我可能是錯的,但是一個非主體不應該繪製。通常UIViews或子類應該繪製不? – Dabrut

相關問題