簡體   English   中英

試圖關閉子視圖和UIView

[英]Trying to dismiss subview and UIView

我對iOS開發還是很陌生。 實際上,如果有一個超級菜鳥,我將是一個:p。 目前,我正在創建一個訪問子視圖的IBAction按鈕。 我有2個ViewController, AddClientVCNewClientVC ,都帶有.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.

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