当前位置: 首页 > 知识库问答 >
问题:

使用addChildViewController时的iAction不工作

沃弘图
2023-03-14

我做的样本项目,以实现顶部菜单。

下面是项目结构。

TopMenu是结构如下所示的父视图。

在TopViewController中,下面的viewDidLoad是我拥有的。

NSString *whereToGo = [[NSUserDefaults standardUserDefaults] valueForKey:@"whereToGo"]; // this is DarkGray by default
UIViewController *goToViewController;
goToViewController = [self.storyboard instantiateViewControllerWithIdentifier:whereToGo];
goToViewController.view.frame = bottomView.bounds;
// bottomView is the first view (will bring child here)
[bottomView addSubview:goToViewController.view];
[self addChildViewController:goToViewController];
[goToViewController didMoveToParentViewController:self];

现在,当我执行项目时,我看到的是深灰色,但当我单击click Me按钮时,什么都没有发生(iAction没有被调用)。

- (IBAction)clickme:(id)sender {
    NSLog(@"clickme==dark gray");
}

我所期望的是,当我单击clickme时,我将在日志中看到clickme==深灰色。

为什么会这样?

正如MidhunMP所说,简短的回答是

menuView正在隐藏bottomView

事实上,对于menuView,我的背景色是clearColor。我假设(这是错误的),因为menuView很清楚,触摸在menuView上不起作用,而这些触摸将进入bottomView。

共有2个答案

孔逸春
2023-03-14

用作容器的视图包含在其他视图中

卢承弼
2023-03-14

问题很简单,您正在添加goToViewController。查看底部查看

菜单视图位于底部视图的顶部,因此它隐藏了对goToViewController的触摸。查看。您需要添加goToViewController。查看至最顶层视图,也称为菜单视图

现在您的视图层次结构如下:

bottomView -> goToViewController.view -> menuView

您需要将其更改为:

bottomView -> menuView -> goToViewController.view

将代码更改为以下内容并选中:

NSString *whereToGo = [[NSUserDefaults standardUserDefaults] valueForKey:@"whereToGo"]; // this is DarkGray by default
UIViewController *goToViewController;
goToViewController = [self.storyboard instantiateViewControllerWithIdentifier:whereToGo];
goToViewController.view.frame = menuView.bounds;
[menuView addSubview:goToViewController.view];
[self addChildViewController:goToViewController];
[goToViewController didMoveToParentViewController:self];
 类似资料:
  • 所有包 | 方法 包 system.base 继承 interface IAction 子类 CAction, CCaptchaAction, CInlineAction, CViewAction, CWebServiceAction 源自 1.0 版本 $Id: interfaces.php 3515 2011-12-28 12:29:24Z mdomba $ 源码 framework/base

  • 我知道subscribeOn在序列被subscribe时会切换执行线程,但我发现它不能与ServerRequest.bodyTomono/flux一起工作 类似于 将使执行线程更改 但让我困惑的是 感谢@MichaelBerry@SimonBaslé,你们两个帮了我很大的忙 简而言之,reactor-netty将覆盖http订阅的subscribeOn,使用在不同的或上包含单独的可以完成我想要的工

  • 我只是第一次涉足iOS开发,我必须做的第一件事就是实现一个自定义容器视图控制器——让我们称之为SideBarViewController——它交换了几种可能的视图控制器中的哪一种它显示的子视图控制器,几乎与标准的Tab Bar Controller一模一样。(它几乎是一个标签栏控制器,但有一个可隐藏的侧菜单,而不是标签栏。) 根据Apple文档中的说明,每当我向容器中添加子ViewControll

  • 我正试着用带Spring的泽西。但无论如何,我不明白为什么Spring依赖项没有被注入到Rest类中。 我的web.xml文件如下所示 My ApplicationContext.xml是标准的,并指定组件扫描的基本包:

  • 我试图用curl调用RESTAPI。apiendpoint在程序中动态生成,并上载json文件。 在这里,我正在打印生成的命令,当我从shell运行该命令时,它正在按预期工作。但是,使用Popen运行相同的命令时会抛出一些json验证错误,这是错误的

  • 我正在转换一个现有的应用程序,它是Spring3、PrimeFaces5到Spring Boot应用程序。以下是我的主要依赖项, 基本上,不能与spring Boot一起工作。