Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Can';t在没有EXC\u BAD\u访问权限的情况下使viewController透明_Ios_Iphone_Objective C_Uiviewcontroller - Fatal编程技术网

Ios Can';t在没有EXC\u BAD\u访问权限的情况下使viewController透明

Ios Can';t在没有EXC\u BAD\u访问权限的情况下使viewController透明,ios,iphone,objective-c,uiviewcontroller,Ios,Iphone,Objective C,Uiviewcontroller,我目前正在尝试制作一个小的演示应用程序,它应该同时显示两个视图: - The first one, BaseViewController, is a classic controller with 2 buttons - The second one, OverViewController, is launch on top of baseView and contains a last button, and is supposed to be transparent and sendin

我目前正在尝试制作一个小的演示应用程序,它应该同时显示两个视图:

- The first one, BaseViewController, is a classic controller with 2 buttons
- The second one, OverViewController, is launch on top of baseView and contains
  a last button, and is supposed to be transparent and sending the touch controls
  to the first one
两个viewController都有其xib。要清楚说明:rootView-->baseView+概览(透明)

我的问题不是将控制事件从第二个视图发送到第一个视图,而是使第二个视图透明且功能正常

以下是我迄今为止所尝试的:

1) -----显示两个视图控制器------------

从应用程序rootViewController

- (IBAction)buttonClicked:(id)sender
{
    OverViewController *overVC = [[OverViewController alloc] init];
    [overVC presentViewControllerFrom:self];
}
- (id)init
{
    self = [super init];
    if (self)
    {
        self.base = [[BaseViewController alloc] initWithNibName:@"BaseViewController" bundle:nil];
    }
    return self;
}
从概览控制器中:

- (IBAction)buttonClicked:(id)sender
{
    OverViewController *overVC = [[OverViewController alloc] init];
    [overVC presentViewControllerFrom:self];
}
- (id)init
{
    self = [super init];
    if (self)
    {
        self.base = [[BaseViewController alloc] initWithNibName:@"BaseViewController" bundle:nil];
    }
    return self;
}
我制作了一个自定义方法,使overView在显示之前呈现baseView

- (void)presentViewControllerFrom:(RootViewController *)sender
{
    [sender presentViewController:self.base animated:NO completion:nil];

    self.view.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.0];
    self.view.opaque = NO;
    [self.base presentViewController:self animated:YES completion:nil];
}
此时,将显示baseView,然后是概述。概述按钮工作正常。伟大的但是《概览》的背景并没有显示背后应该是什么,而是保持黑色。没有阿尔法透明度

2) -----显示基本视图并将概览添加为子视图------------

从应用程序rootViewController(与之前的相同):

从概览控制器(不显示但添加子视图):

这一次,透明度非常好,但任何触摸概览按钮都会显示一个EXC\u BAD\u访问


我在那里,不知道怎么做。任何帮助都将不胜感激!:)

不要同时显示视图控制器和添加子视图。选择1。它应该是您选择的子视图。它可以由另一个控制器拥有,并且该控制器可能应该作为子视图控制器添加

在第一种情况下,您会看到黑色,因为iOS正在从视图层次结构中删除(现在预期不可见)视图。所以你的观点是透明的,但你所期望的背后已经不存在了

第二种情况可能只是导致某个地方的视图层次结构无效


概览控制器不应拥有基本控制器。应显示基本控制器,然后将概览控制器视图添加为子视图。

Hi wain。谢谢你的快速回答。这是我在尝试这两种情况时得出的结论。我尝试了2个AddSubView,但同样,该应用程序触发了EXC\u BAD\u访问。我会试试你最后一行的想法,我很快就会回来。完成后,这确实是一个概念上的错误。非常感谢。