如何挂接控制器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];
}