0

作为免责声明,我是一名 iOS 初学者,处于一个非常独特的位置。我是一名实习生,在工作中学习,测试应用程序的截止日期很严格,具有特定的规格。因此,不幸的是,我没有足够的时间学习有关 xCode 和 Objective C 的所有知识。

无论如何,我正在尝试创建一个类似于 iPad 滑出菜单的导航菜单。我已经查看了过去针对此类问题给出的大量示例代码。这一切都很好,但我无法理解他们在做什么。我认为这是因为被视图控制器和委托相当困惑。而且,由于我应该自己编写这一切,我不能仅仅建立在他们现有的代码之上。

我对这项工作的计划是拥有一个主视图控制器,在表格视图中包含导航菜单。这隐藏在普通 UIView 后面,直到按下按钮,此时普通 UIView 滑出屏幕足以显示菜单。选择菜单项后,正常的 UIView 将滑回其原始位置,并被相关的 UIView 替换,由其视图控制器控制。换句话说,单击与“Home”相关的菜单项将加载由 homeViewController 控制的 homeViewController.xib。这将加载到 tableView 顶部的普通 UIView 子视图中。

由于按下按钮,我可以在正常的 UIView 中加载视图。

homeViewController *_homeViewController = [[homeViewController alloc]initWithNibName:@"homeViewController"];
[self frontView] = _homeViewController.view;

该代码中可能存在一些语法错误,因为它来自内存。我目前无法访问带有我的代码的计算机,但这是一般要点。基本上,这会将主视图笔尖放在 frontView 上(即位于表视图上方的普通 UIView),但它没有连接到 homeViewController。或者至少我认为这是问题所在,当我按下一个按钮时,在 nib 和 homeViewController.h 之间正确连接,并且仅在 .m 文件中设置为 NSLog,应用程序崩溃。

知道以这种方式显示时如何将此笔尖连接到它的 viewController 吗?或者,在 IB 中创建 nib,不使用关联的 .h 和 .m 文件,并将主视图控制器也用作 homeViewController?或者,如果我的逻辑本身就有缺陷,我应该怎么做?NavigationControllers 的东西?

编辑:我还尝试了一种新方法——将 homeViewController 的文件所有者更改为 viewController,并将 homeViewController 操作上的按钮连接到 viewController。这也导致按下按钮时崩溃。我真的认为问题在于让多个视图控制器同时在屏幕上运行,或者有来自不同笔尖的多个视图,同时由屏幕上的一个视图控制器控制。

4

1 回答 1

0

我怀疑您的直接问题是,_homeViewController只要您离开该代码所在的任何方法,它就会被释放。要解决此问题,请strong在此类中创建一个属性,_homeViewController只要需要其视图就可以将其分配给该属性而不是局部变量。这样,作为该视图一部分的按钮(或其他任何东西)仍然具有支持它们的有效控制器对象。

从长远来看,当您需要更改屏幕时推送或呈现视图控制器是一个更好的策略,但正如我所说,这是直接的问题...... :)

于 2012-06-25T23:29:42.643 回答