![](/img/trans.png)
[英]Trying to dismiss presentingViewController using button in the subview
[英]Trying to dismiss subview and UIView
我對iOS開發還是很陌生。 實際上,如果有一個超級菜鳥,我將是一個:p。 目前,我正在創建一個訪問子視圖的IBAction
按鈕。 我有2個ViewController, AddClientVC
和NewClientVC
,都帶有.nib文件。 因此,基本上,在我的AddClientVC內部,我使用以下代碼實現了IBAction
按鈕:
- (IBAction)buttonPressed:(id)sender
{
UIView *transparentBG = [[UIView alloc] initWithFrame:CGRectMake(-5, -5, 1500, 2500)];
transparentBG.backgroundColor = [UIColor blackColor];
transparentBG.opaque = NO;
transparentBG.alpha = 0.5;
[self.view addSubview:transparentBG];
transparentBG.center = transparentBG.center;
vc = [[NewClientVC alloc] initWithNibName:@"NewClientVC" bundle:nil];
[self.view addSubview:vc.view];
vc.view.center = self.view.center;
}
如您所見,我將UIView實現為透明背景。 基本上是AddClientVC->透明背景-> NewClientVC。 現在,我創建了另一個IBAction按鈕,但這一次是在NewClientVC中,它是一個用來消除被訪問的子視圖的函數,如下所示:
- (IBAction)saveDismiss:(id)sender
{
[self.view removeFromSuperview];
}
我現在遇到的問題是,當我單擊saveDismiss按鈕時,它僅刪除了我先前在AddClientVC上調用的子視圖,但沒有刪除我作為UIView
創建的透明背景。 因此,問題在於如何實現同時刪除我的子視圖和創建的UIView
透明背景的操作。
我需要我能得到的所有幫助:)
不必擔心代碼執行速度,並對Apple的SDK充滿信心。 UIKit已針對最佳用戶體驗進行了優化。 我認為,嘗試通過不適當使用SDK來增強代碼是一種冒險的策略。 ;)– Vincent Zgueb
對不起,文森特,但我不同意你的看法。 我到達這里是因為我想實現一個手勢,為我的視圖添加一個子視圖,這將是我的應用程序的導航。
[self.view addSubview:ctrl.view];
呈現視圖的速度比
[self.navigationController presentModalViewController:ctrl animated:NO]
順便說一句,在我的案例中,該主題的解決方案是:
[self.view sendSubviewToBack:ctrl.view];
我不太確定我是否完全了解您要發生的事情,但是也許您可以嘗試這樣的事情?
- (IBAction)saveDismiss:(id)sender
{
[vc removeFromSuperView];
[self.view removeFromSuperview];
}
我建議不要通過手動添加子視圖來管理屏幕,而應使用
- (void)presentModalViewController: (UIViewController *)modalViewController
animated: (BOOL)animated
根viewController上的方法。 或更好地實例化UINavigationController並使用push和pop方法來向下/向上瀏覽視圖。 在這里查看蘋果參考
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.