如何挂接控制器A内的UIButton,以便使用情节提要板打开包含在控制器A内(“容器视图”内)的控制器B?

即,控制器B仅占据控制器A区域的一部分。控制器A仍将部分可见。

背景:
将控制器B添加到另一个控制器A内的“容器视图”时,默认情况下是在加载控制器A时立即打开控制器B。我希望控制器B首先被隐藏,然后通过单击按钮将其打开。

最佳答案

分解笔尖/故事板启动的资源的视图生命周期将对此有所帮助。

在创建并加载控制器B之后,但在显示之前,您需要隐藏控制器B的视图。然后,为了响应某个动作,您需要取消隐藏视图(或进行一些更奇特的演示)。

通常,您将在控制器A中声明以下属性:

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


您将在情节提要中进行连线。
现在,您可以在controllerA的代码中引用到controllerB实例。

由于您已将controllerB的视图嵌套在情节提要中的controllerA的视图层次结构之内,因此一旦在controllerA上调用-viewDidLoad,controllerB的实例将存在并且可以进行操作。

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


您可以在viewWillAppear或其他一些地方执行此操作,但是只要在调用-viewDidAppear之前隐藏controllerB.view,就可以了。

然后,让controllerA响应按钮按下操作,如下所示:

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

10-08 11:16