问题标签 [childviewcontroller]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
8288 浏览

ios - 如何在 ios 的子视图控制器中检测触摸事件

我为 iPhone 创建了一个类似菜单的侧视图,我使用容器船概念在父视图控制器中添加子视图控制器。当用户点击导航栏上的菜单按钮时,我只需更改子视图控制器的框架以使其像显示菜单一样进行动画处理,以便子视图控制器将其框架的一半剪裁到右侧。

现在我的问题是每当用户点击子视图控制器的任何部分时,我只想通知其父视图控制器触摸事件已在其子视图控制器上触发,以便父视图控制器可以重置子视图控制器的框架以对其进行动画处理喜欢关闭一半显示的菜单。

我使用了点击手势并将其添加到子视图控制器子视图的每个子视图中。因此任何子视图上的点击手势都会通知父视图控制器有关触摸事件的信息。

触摸事件适用于子视图控制器的主视图,但任何按钮上的任何触摸都无法识别 TAP 事件。

我不知道我错在哪里。请帮助我如何通知父视图控制器其子视图控制器中的任何触摸。提前致谢。

0 投票
1 回答
115 浏览

ios - 重新呈现父视图控制器时,删除子视图控制器会禁用父视图控制器中的手势

在 iOS 中,当我添加一个 childviewcontroller,然后将其删除时 - 所有重叠的手势都已被禁用。

例如,parentviewcontroller 有一个“longtap”手势,而 childviewcontroller 有一个“longtap”手势。

父母认为 longtap 手势有效。

然后我做 addchildviewcontroller 并且 VC 的 longtap 手势有效。

然后我调用 removeFromParentViewController

并且用于响应长按手势的原始视图控制器的视图已禁用其手势。

(我可以循环浏览所有手势并再次“启用”它们 - 我的问题是为什么当我添加然后删除 childviewcontroller 时 longtap 手势会被禁用 - 我正在做所有标准的事情,即。

然后

0 投票
1 回答
733 浏览

ios - iOS 从子视图访问父视图元素

我有一个 ViewController1.h/m 和 SettingsViewController.h/m。在 ViewController1.m 我有这个:

添加设置时,我不会从父视图中删除 ViewController1。当我用按钮切换设置视图时,它就在一边并滑入。在 SettingsViewController 内,我有一个表格,然后单击一行,我想将 SettingsViewController 滑出屏幕并从 ViewController1 执行选择器……这就是我现在的问题所在。这是我尝试做的事情:

记录VC1.settingsView.center.x总是给我 0 ......当它应该是 160 时。在运行performSelectorDOES 日志时在 VC1 方法中添加一个日志语句,但该方法的其余部分没有运行,不会将 SettingsViewController 滑出屏幕。我不了解父母/孩子的关系吗???

0 投票
1 回答
712 浏览

ios - 在 UIView 动画完成块中使用 [self.view removeFromSuperview] 会立即删除视图

固定的

事实证明动画被调用了两次。我现在已经修复了它,所以动画只被调用一次并且它工作得很好。


我怀疑这可能与我使用子视图控制器有关,但是当我尝试使用动画删除子视图控制器的视图时,我注意到一些奇怪的行为。

我将子视图控制器与子视图控制器的视图一起添加到父视图,并从屏幕底部为该视图设置动画。这非常有效——我的问题是当我尝试删除子视图/视图控制器时。我正在将孩子的视图动画到屏幕底部,然后调用[self.view removeFromSuperview]完成块,但视图会立即被删除(因此不会发生动画)。如果我删除该[self.view removeFromSuperview]行,动画将正常工作,但视图不会从父视图控制器的视图中删除。


添加子视图控制器

(这按预期工作)


删除子视图控制器

(这不起作用——视图被立即删除,而不是在完成后)



我什至尝试删除[self willMoveToParentViewController:self.parentViewController][self removeFromParentViewController]只是看看它是否改变了任何东西,但只要[self.view removeFromSuperview]存在,视图就会立即消失。

0 投票
1 回答
564 浏览

objective-c - 根视图控制器的子视图控制器位于根之上

我有一个看似简单的问题,但我找不到解决方案!我有一个 UIViewController 的子类,它是我的根视图控制器,还有十个不同的 UIViewcontrollers,我想在调用时作为子视图控制器加载(一次一个,而不是同时在屏幕上显示十个。)

根控制器有几个按钮,它们的动作调用相应的代码来调出子视图控制器。根视图控制器首先由 nib 加载,我想用 page01ViewController 作为第一个孩子来实例化它。但是每当我调用以下代码时,子视图控制器就会覆盖在我的 rootViewController 之上,将所有控制按钮隐藏在我的根控制器中!

我的问题与此处提出的问题类似,但从未确定过解决方案:

从子视图控制器返回到容器

我找到的每个教程都有相同的设置:创建新的 VC,将其作为 childView 添加到 self,然后将其作为子视图添加到根视图,但它不起作用。

有人知道这样做的正确方法吗?

0 投票
1 回答
264 浏览

ios - 如何以所需的方向添加 childViewController

我有一个处于 potrait 模式的 parentViewController,我想在横向模式下添加 childViewController(它是 MPMoviePlaycontroller 的子类),这是我正在使用的代码:

在 ParentViewController.m

在 ChildViewController.m 中

问题是 ChildViewController 仍然以纵向模式显示。

0 投票
1 回答
131 浏览

ios - 如何在表格单元格中访问 c​​hildViewControllers

我在 StoryBoard 上的静态表格单元格中使用了 containerView。

这些什么都没有。我不想使用自定义 UIViewCell。

如何在 TableViewController 中访问?

0 投票
0 回答
400 浏览

objective-c - 向子视图控制器的视图发布可访问性通知时崩溃

在“ContainerViewControler”的#viewDidAppear上,发布 UIAccessibilityScreenChangedNotification 会导致间歇性崩溃,异常类型为:EXC_CRASH (SIGABRT)。

附上了带有堆栈跟踪的屏幕截图。

异常堆栈跟踪

在尝试调试时,在帧 'objc_exception_throw' 上,确实在 $r0 处得到了异常

(lldb) po $r0 *** -[__NSArrayM objectAtIndex:]:空数组的索引 0 超出范围

在帧 '_UIAXBroadcastMainThread' 上,在 $r8 处获得集合视图中的一个单元格

印象中在childController上的collectionView出现和可访问性通知传递之间存在时间问题,但无法为其编写测试。

要求更好地了解 UIAccessibility 期望 NSArray 持有什么以及导致索引超出范围的原因。

这是在
iOS 7
iPhone 4、iPhone 5上

编辑
由于崩溃是间歇性的,因此调动了#objectAtIndex: 方法以查看预期数组包含的内容。

看起来该数组包含所有 UIView 实例,这些实例是集合视图的 UICollectionViewCell 的子视图,通知已发布并启用了“可访问性”。

不确定 UIAccessibility 如何填充该数组。

想知道它是否假定大小等于启用了“可访问性”的每个 UIView 但无法根据某些条件填充数组.

0 投票
1 回答
407 浏览

ios - 有什么办法可以暂时用 UIView 覆盖 iOS 7 状态栏?

我在这里遇到了一些奇怪的情况,并且一直在尝试寻求帮助,但是这些解决方案并不能真正解决我的问题,而是使情况变得更糟。

我有一个容器 viewController,它在水平滚动视图中有三个子控制器视图。我的默认子控制器视图是我的自定义相机页面。现在这就是我想要实现的目标。我想将状态栏隐藏在我的相机页面上,但希望其他两个视图(也就是我的另外两个子控制器)显示状态栏。

当我从左子控制器拖动到相机页面或从右子控制器拖动到相机页面时,我希望我的相机页面视图与状态栏重叠。

我唯一看到这样做的地方是在 Snapchat 上,我已经尝试了几个小时来弄清楚,但似乎无法提出解决方案。任何帮助表示赞赏。

0 投票
1 回答
413 浏览

ios - 子视图控制器中的导航堆栈

我正在UINavigationController像这样在容器视图中放置一个(这在全屏UIViewController子类中):

现在这可以按预期工作,并littleViewController出现在我期望的矩形中,顶部有一个导航栏。现在让我们说由于内部的一些交互,littleViewController发生了这样的事情

不幸的是,这个后续的控制器最终会全屏显示。现在我在里面已经完全做到了这一点popoverControllerssplitViewControllers并且它们的行为与我想要的完全一样,导航堆栈构建在它开始的小矩形内。

如何在任意 CGRect 中的容器内构建导航堆栈?