2013-11-22 35 views
1

做出的viewController透明目前,我試圖讓這應該出現在同一時間2次小的演示應用程序:離不開EXC_BAD_ACCESS

- The first one, BaseViewController, is a classic controller with 2 buttons 
- The second one, OverViewController, is launch on top of baseView and contains 
    a last button, and is supposed to be transparent and sending the touch controls 
    to the first one 

兩者的viewController有他們的廈門國際銀行。要清楚:rootView - >基本視點+概述(透明)

我的問題是從第二視圖的先發控事件,而是使第二視圖的透明和functionnal。

這裏是我試過到目前爲止:

1)------------呈現兩個視圖控制器------------

從應用RootViewController的

- (IBAction)buttonClicked:(id)sender 
{ 
    OverViewController *overVC = [[OverViewController alloc] init]; 
    [overVC presentViewControllerFrom:self]; 
} 

OverViewController

- (id)init 
{ 
    self = [super init]; 
    if (self) 
    { 
     self.base = [[BaseViewController alloc] initWithNibName:@"BaseViewController" bundle:nil]; 
    } 
    return self; 
} 

我做了一個自定義的方法來使overView呈現之前呈現的baseView。

- (void)presentViewControllerFrom:(RootViewController *)sender 
{ 
    [sender presentViewController:self.base animated:NO completion:nil]; 

    self.view.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.0]; 
    self.view.opaque = NO; 
    [self.base presentViewController:self animated:YES completion:nil]; 
} 

此時,出現baseView,接着是overView。 overView按鈕正常工作。太好了!但是,overView的背景並沒有顯示背後應該保留的黑色。沒有alpha透明度。

2)------------呈現所述基本視圖和添加概述作爲一個子視圖------------

從應用RootViewController的(比前一次)相同:

- (IBAction)buttonClicked:(id)sender 
{ 
    OverViewController *overVC = [[OverViewController alloc] init]; 
    [overVC presentViewControllerFrom:self]; 
} 

OverViewController(未呈現,但加入子視圖):

- (void)presentViewControllerFrom:(RootViewController *)sender 
{ 
    [sender presentViewController:self.base animated:NO completion:nil]; 

    self.view.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.0]; 
    self.view.opaque = NO; 
    [self.base.view addSubview:self.view]; 
} 

這一次,透明度很好,但任何觸摸overView按鈕都會導致出現EXC_BAD_ACCESS

我在那裏,想知道如何做到這一點。任何幫助將不勝感激 ! :)

回答

3

請勿使用呈現視圖控制器和添加子視圖的組合。選擇1.它應該是你選擇的子視圖。它可以由另一個控制器擁有,並且該控制器可能應該添加爲子視圖控制器。

在第一種情況下,您會看到黑色,因爲iOS正在從視圖層次結構中刪除(現在預期不可見)視圖。所以你的觀點是透明的,但你期望的背後不再存在。

您的第二種情況可能只是導致無效的視圖層次結構。

總覽控制器不應擁有基本控制器。應顯示基本控制器,然後將概覽控制器視圖添加爲子視圖。

+0

嗨,你好!感謝你及時的答覆。這是我在嘗試這兩種情況時得出的結論。我嘗試了2個addSubviews但同樣,該應用程序觸發了一個EXC_BAD_ACCESS。我會嘗試你的最後一行想法,我很快回來。 – shinyuX

+0

完成,這確實是一個概念錯誤。謝謝 ! – shinyuX