在控制器A中,通过UIButton打开包含的控制器B



如何连接控制器a内的UIButton,以便它使用序列图板打开控制器a内("容器视图"内)的控制器B?

即控制器B只占用控制器A的一部分区域。控制器A仍将部分可见。

背景:将控制器B添加到另一个控制器a内的容器视图时,默认情况下,控制器a加载后立即打开控制器B。我想先隐藏控制器B,然后点击按钮打开它。

分解nib/storyboard启动的资源的视图生命周期将有所帮助。

在创建和加载控制器B之后,但在显示之前,您需要隐藏该视图。然后,为了响应一个动作,你需要取消隐藏视图(或者做一些更花哨的演示)。

通常,您将在控制器a中声明一个属性:

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

你把它放在故事板上。现在您有了对controllerB实例的引用,您可以在controllerA的代码中使用它。

由于您已经将controllerB的视图嵌套在故事板中controllerA的视图层次结构中,因此一旦在controllerA上调用-viewDidLoad,您的controllerB实例就会存在并准备好进行操作。

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

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

然后你就有了控制器A对按下按钮的反应,类似这样:

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

这是一件非常简单的事情。您可以为容器视图创建一个出口

@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.
}

取消隐藏按钮点击

最新更新