insertSubview的一个简单例子:belowSubview不起作用

Tom*_*myG 4 iphone objective-c uiviewcontroller uiview ios

我查了很多这种方法的例子,但仍然无法弄清楚我在做什么.我正在尝试在当前视图下添加另一个视图,然后在用户单击当前屏幕上的按钮时删除当前视图.由于某种原因,视图消失了,但我没有看到应该低于它的视图.我只是一个白色的屏幕.

这是我当前的ViewDidLoad(顶部的那个 - 为了示例的ViewControllerTop)视图:

- (void)viewDidLoad
{
[super viewDidLoad];
viewControllerBottom = [[ViewControllerBottom alloc] init];
[self.view insertSubview:viewControllerBottom.view belowSubview:self.view];

}
Run Code Online (Sandbox Code Playgroud)

按照这种方法,有一种方法在用户点击按钮后触发:

- (IBAction)goToBottomView:(id)sender { 
[self.view.superview removeFromSuperview];

}
Run Code Online (Sandbox Code Playgroud)

有没有人看到这个有什么问题?谢谢您的帮助!

顺便说一句 - 即使它很愚蠢,我也尝试使用insertSubview:aboveSubview但它也不起作用.

pgb*_*pgb 13

我认为你的代码存在根本性的错误.你在做:

[self.view insertSubview:viewControllerBottom.view belowSubview:self.view]
Run Code Online (Sandbox Code Playgroud)

所以你在belowSubview:参数中传递的视图需要是子视图self.view,而self.view不是!

insertSubview:belowSubview: 如果您按预期使用接收器对象的子视图,它将正常工作.