我有四個UIView
s:viewA
是根視圖,vhich有viewB
作爲它的子視圖。 viewB
具有viewC
作爲其子視圖並且viewC
具有viewD
作爲其子視圖。所以有四個視圖的層次結構。 viewD
基本上是一個按鈕,可以挖掘做些什麼。由於該操作與數據庫有關,因此可能需要一段時間。所以我想要一個黑暗不透明的UIView
,中心有一個UIActivityIndicator
,告訴用戶等待一會兒,並阻止其他可能導致麻煩的點擊操作。但是,必須將暗視圖放入viewA
才能覆蓋所有屏幕。以下是我嘗試(併成功)的內容,但我想知道是否有更簡單的方法來完成此操作。讓一個UIView改變其超視圖(或superview的超視圖)?
從
viewD
通過viewD.superview.superview.superview
訪問viewA
。然而,它不是很靈活,因爲一旦層次結構發生變化,這個鏈條很可能會改變。使用代表團。
viewD.delegate = viewA
。但是,viewD
由viewC
(它的直接超視圖)創建,其由viewB
創建,其由viewA
創建。所以,如果viewD
,viewC
和viewB
不是其各自的超類的@property
(由viewA.viewB.viewC.viewD
訪問是不可能的),那麼viewA
不能有一個指針viewD
,這將使代表團不可能的(據我所知)。使用NSNotification
。讓viewD
發佈@"ActivityIndicatorShouldBePutOn"
通知,並讓viewA
成爲觀察者。但是,NSNotification
用於播放權嗎?所以這有點不合適。只要這種情況發生(黑色面具放在整個屏幕上),我可以使用與
UIApplication
相關的東西來訪問屏幕並將其直接放到屏幕上。但是,如果我只想將它放在屏幕的一部分上以實現不同的目的,那麼這是行不通的。
所以我想問一下是否有更好的方法去做,或者上面提到的一種方法是否是標準方法。
你不必在一個視圖控制器遊戲? –
@HermannKlecker是的,我有一個,但是因爲'viewD'由'viewC'創建,而不是視圖控制器,那麼視圖控制器怎麼會有所作爲? – zyl1024
我剛剛覺得應該使用視圖控制器來創建視圖。這應該是你問的標準方式。如果你不想那麼做,那麼你應該使用選項3或直接將新的活動指示器thingy添加到窗口。 (Afaik窗口本身不會旋轉爲縱向或倒置。) –