2014-02-26 37 views
0

如何連接控制器A內部的UIButton,以便使用故事板打開包含在控制器A(位於「容器視圖」內部)的控制器B?在控制器A中,通過UIButton打開包含的控制器B

即控制器B只佔用控制器A區域的一部分。控制器A仍然部分可見。

背景: 將控制器B添加到另一個控制器A內的容器視圖時,默認會在控制器A加載後立即打開控制器B.我希望首先隱藏控制器B,然後通過輕按按鈕打開控制器B.

+0

不要假設你有一個形象展示你的意思 – AppHandwerker

回答

2

分解視圖生命週期的筆尖/故事板啓動資源將在這裏幫助。

在創建和加載控制器B之後,但在顯示之前,您需要隱藏控制器B的視圖。然後,爲了迴應某個動作,您需要取消隱藏該視圖(或進行一些更有趣的演示)。

通常你會控制器A內聲明一個屬性:

@property (weak, nonatomic) IBOutlet ControllerB *controllerB; 

你在故事板線了。 現在您可以參考您的controllerB實例,您可以從controllerA的代碼中使用該實例。

由於您已將控制器B的視圖嵌套在故事板中控制器A的視圖層次結構內,因此您的controllerB實例將存在,並且只要在controllerA上調用-viewDidLoad就可以進行操作。

- (void)viewDidLoad 
{ 
    [_controllerB.view setHidden:YES]; 
    //other setup and configuration of controllerA 
} 

你可以在viewWillAppear中做到這一點,或其他一些地方,但只要你隱藏controllerB.view -viewDidAppear叫之前,你會被罰款。

然後,你必須controllerA迴應按鈕推動這樣的事情:

- (IBAction)userPressedTheButton:(id)sender 
{ 
    [_controllerB.view setHidden:NO]; 
} 
1

這是一個非常簡單的東西。你可以爲容器視圖

@property (weak, nonatomic) IBOutlet UIView *containerView; 

viewDidLoad形成一出口只是將其隱藏

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.containerView.hidden = YES; 
    // Do any additional setup after loading the view, typically from a nib. 

} 

取消隱藏按鈕點擊