2011-10-07 59 views
0

我有一個UIView,我已將子類視爲在我的應用程序中使用的主視圖。其中,我有兩個子視圖:橫幅和容器。 Banner基本上是投放廣告或免責聲明或其他內容的地方。容器意味着作爲主要視圖,您可以添加,刪除視圖,並將其視爲唯一的視圖。設置子視圖作爲調用父級UIView子類的響應者

現在,我只是重寫父視圖的方法並將調用發送到容器視圖。我不知道是否有這樣做的更簡單的方法,而不必寫出這樣的東西,每方法:

- (void)addSubview:(UIView*)view { 
    [container addSubview:view]; 
} 

也許你可以將其委託的所有方法調用視圖以特定的子視圖,而不是響應方法調用本身。

任何人都知道這是可能的嗎?

回答

0

我對這個問題有點困惑。

Responder鏈存在並按照層次結構將ui事件傳遞到屏幕上的所有可見視圖。閱讀一些關於響應者鏈可能是有用的,因爲通過設計它將事件從最深的視圖傳遞到最高的(根),這與你正在尋找的方向相反(如果我正在閱讀這個權利)。

如果您需要將事件從超級視圖轉發到子視圖,爲了尊重封裝原則,您應該在子視圖的子類接口中定義適當的操作,然後配置您的超級視圖以將該子視圖/類中的操作作爲目標。

+0

這不是關於對UI操作的響應,更多是關於將主視圖的子視圖作爲外部方法調用的主視圖。例如,當我將我的BaseView子類添加爲導航控制器的視圖時,我希望是否將所有對「self.view」方法的調用傳遞給self.view的特定子視圖,而不必覆蓋所有方法的UIView。 –

+1

你可能會想一點點。視圖控制器有一個隱式視圖[self view],但它並不侷限於擁有一個視圖,所以在你的情況下,你需要在視圖控制器loadView中實例化兩個視圖 - 一個是你的baseView,直接分配給視圖控制器的自身。視圖,然後是一個附加的外圍視圖,添加到同一個超級視圖,但沒有指定爲視圖控制器的self.view(相當於它會被VC子類的另一個屬性引用,即self.extraView。 – isaac

+0

)重複說添加額外的視圖到self.view的超級視圖,即'[self.view.superview addSubview:extraView]',這實際上並不奏效.Xcode不與我或任何人爭論,但視圖只是我不認爲視圖控制器是用來顯示任何不在主視圖中的東西...? –

相關問題