簡體   English   中英

從SubView呈現模態ViewController

[英]Present modal ViewController from SubView

我正在嘗試從視圖控制器B中呈現模式視圖控制器C。B的視圖未覆蓋全屏,並且是另一個視圖控制器A的子視圖。當我嘗試呈現全屏模式時,我看到的是模式覆蓋了整個屏幕,但是當我點擊屏幕上的某些位置時,控件將“通過”到A的視圖。

我可以通過某種委托來介紹A的模式,從而繞開它,但是我不知道為什么會這樣! 畢竟,如果您有一個標簽欄控制器來管理您的視圖之一,並且嘗試呈現模式視圖,則它可以覆蓋整個屏幕。 幕后發生了什么魔術嗎?

我認為沒有關於如何實現模態的任何官方文檔,但是任何視圖都可以獲取UIApplicationUIWindow並在rootViewController屬性上調用-presentModal...。 這將使您的模式全屏顯示效果。 我敢肯定,還有其他方法可以達到同樣的效果。

[[[[UIApplication sharedApplication] keyWindow] rootViewController] presentModalViewController:myModalVC animated:YES];

在這種情況下,您需要使用addSubview:和BringSubviewToFront:為所有視圖控制器實現自己的“模態”方法。 我已經在我的一個較大的項目中做到了這一點,在該項目中我希望模態視圖具有一些不同的行為。

這對我有用:

UIViewController* vc = [[[UIViewController alloc] init] autorelease];
UIWindow* keyWindow = [[UIApplication sharedApplication] keyWindow];
UIView* topView = [[keyWindow subviews] objectAtIndex:[[keyWindow subviews] count] - 1];
vc.view = topView;

[vc presentModelViewController...

基本上,您將創建一個新的UIViewController並將其附加到主窗口的最頂層視圖(這是用戶當前看到的視圖)。

很簡單,但是不確定接受度和效率。 這就是我用的。

  1. 將所有視圖控制器嵌入rootView下的mainView中。
  2. 將所有模式視圖添加到rootView,同時禁用mainView的userInteractionEnabled標志。 模態視圖應添加到rootView而不是mainView
  3. 完成后,重新啟用mainView的用戶交互。

希望這可以幫助...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM