- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有 subview 的 Root View Controller 作为 subview Controller View 的包装器。基本思想是我的根 Controller 有一个左右 View Controller ,都显示在屏幕上(类似于 splitviewcontroller)。加载时,模态视图会在 Root View Controller 上弹出并询问详细信息。然后模态视图联系服务器,并在得到响应后被关闭。根 Controller 然后使用以下代码添加 subview Controller :
[self addViewController:self.leftViewController];
[self addViewController:self.rightViewController];
[self addView:self.rightViewController.view ToWrapper:self.rightViewWrapper];
[self addView:self.leftViewController.view ToWrapper:self.leftViewWrapper];
添加 View Controller 的地方:
[self addChildViewController:controller];
[controller didMoveToParentViewController:self];
addViewToWrapper 只是将 View Controller 的 View 添加到 rootViewController 的相关 subview 中,如下所示:
[[viewWrapper.contentView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
newSubview.frame = viewWrapper.contentView.bounds;
newSubview.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
[viewWrapper.contentView addSubview:newSubview];
99% 的时间都可以正常工作。两个 View 都会立即出现,并且 viewWillAppear 在两个子 Controller 中都会触发。但是,有时屏幕会在短时间内保持白色,并且 viewWillAppear 不会在右 View Controller (编辑:和左 View )中触发。所有其他 View 生命周期方法都会触发,只是 viewWillAppear 不会触发。
不幸的是,我无法提供整个类(class)的代码,因为它很复杂且专有。但是,此间歇性行为的描述中是否有任何线索?
最佳答案
一些想法:
一个
看起来您的收容方法没有被正确调用。对于每个 viewController,它们应该如下所示:
[self addChildViewController:controller];
[self.view addSubview:controller.view];
[controller didMoveToParentViewController:self];
应在 addChild
和 didMove
调用之间将 View 添加到父 View 。
两个
据我所知,一次不能有超过一次的演示或解雇。 IE。如果您试图在模态被取消的同时显示(添加)您的 subview Controller ,您将在控制台日志中看到错误,并且您的“添加”操作将不会发生。
我的建议是在模态视图 Controller 上创建一个委托(delegate)协议(protocol)。在 dismissViewControllerAnimated:completion:
的完成 block 中,调用您的委托(delegate)方法:
[self dismissViewControllerAnimated:YES completion:^{
if ([weakSelf.delegate respondsToSelector:@selector(settingsViewControllerDidDismiss:)])
{
[weakSelf.delegate settingsViewControllerDidDismiss:self];
}
}];
在您的 rootViewController 中,您将开始在 settingsViewControllerDidDismiss
或您决定调用该方法的任何内容中添加其子项。关键是“添加”操作在解雇操作之后开始。
希望这对您有所帮助。
关于ios - View Controller 容器偶尔会错过子 Controller 中的 viewWillAppear,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23249867/
我正在使用 Azure 函数处理来自 IOT 中心的消息并将其输出到 Blob 存储。 enter image description here 但是当我高频发送时,该功能丢失了 IOT 消息。例如,
我正在尝试使用 mediasoup 通过 room.createRtpStreamer 转发 RTP 流 我的问题是我从 producer.rtpParameters.codecs[i].payloa
我正在尝试使用 mediasoup 通过 room.createRtpStreamer 转发 RTP 流 我的问题是我从 producer.rtpParameters.codecs[i].payloa
我正在使用 Spring 应用程序事件将信息发送到其他 bean。有一个 bean A,一旦 A 初始化,它就会发布一个事件。并且有一个 bean B 监听 A 发送的事件。 根据 A 在其他 Bea
CMake 有 Qt4 的特殊变量 ${QT_DEFINITIONS},其中包含 QT 定义,例如 QT_NO_DEBUG 和 QT_DEBUG。 Qt5 没有这样的选项。 如何在 cmake 中添加
我是一名优秀的程序员,十分优秀!