简而言之,我想从 viewSwitchManager 类调用一个方法,该类包含一个将当前显示 View 切换到不同 View 的方法。
-(void)replaceView:(UIView*)oldSubView withView:(UIView*)newSubView;
我正在尝试实现以下内容:
在我的项目中,我有 10 个 View ,它们都有自己的 .m 和 .h 文件。让我们用 1 - 10 之间的数字代表每个 View 。
每个 View 仅包含 9 个按钮,允许用户单击按钮,然后应用程序将根据单击的按钮将用户带到指定的 View 。
示例:
假设当前显示的 View 是:view1。 在 view1 上显示 9 个按钮,每个按钮对应于应用程序中的不同 View 。
[2] [3] [4] [5] [6] [7] [8] [9] [10]
注意:button1 缺失,因为它响应当前 View view1,因此该 View 上不需要 button1。
操作:用户单击按钮 6。 一个方法将从一个名为 viewSwitchManager 的单独类中调用,该方法将用 view6 替换当前 View ,并将 view1 替换为新 View 。
新 View (view6)将再次显示,按钮对应于应用程序中的不同 View ,如下所示:
[1] [2] [3] [4] [5] [7] [8] [9] [10]
注意:button6 缺失,因为它响应当前 View view6,因此此 View 上不需要 button6。
这就是我想要实现的目标。我尝试过不同的事情,但我不断收到错误。有时甚至会出现 SIGBART 错误。我在将 View 作为参数发送时遇到问题,在获取当前 View 并将其替换为新 View 时遇到问题等等。我曾考虑过拥有一个导航 Controller ,但看起来这看起来像是一次令人畏惧的体验,我真的不想深入到不同的层。 只要一个简单的一进一出 View 系统就很棒了。哈哈
有人可以帮我吗,因为这花了我很多时间!因为这个问题花了我大部分时间,我什至不得不重新购买许可证只是为了购买更多时间,这很有趣。
任何帮助将不胜感激。预先感谢您。
最佳答案
听起来 viewSwitchManager
应该源自 UIViewController
,我将在下面的示例代码中将其称为 SwitchViewController
。它有一个平淡的 UIView
作为它的 view
作为背景,它总是被按钮填充的 View 覆盖。
之后,这应该是一个简单的问题:
@implementation SwitchViewController
-(void) replaceView:(UIView*)oldSubView withView:(UIView*)newSubView {
[[self view] addSubview:newSubView];
[oldView removeFromSuperview];
}
@end
我怀疑您的问题与管理 View 无关,而与管理内存有关。如果您不在其他地方保留它,[oldView removeFromSuperview]
将释放并取消分配旧 View 。
您可以做两件事来确保您的代码更可靠。一,使用分析器 (Cmd-Shift-a) 进行构建并清理它发现的任何问题。
二,启用僵尸。 NSZombieEnabled
导致所有已释放的对象保留在内存中,但标记为“已释放”。如果曾经使用过已释放的“僵尸”对象,则会引发异常。之后,需要确定为什么您的对象没有被适当保留。以下是设置 NSZombieEnabled
的方法:
- 项目 -> 编辑事件可执行文件
- 选择“参数”选项卡
- 添加到“要在环境中设置的变量”
- 名称:NSZombieEnabled
- 值:是
关于iphone - 将当前 View 替换为任何现有的新 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3823132/