两个视图控制器(带有笔尖)同时作用于屏幕

时间:2012-06-25 23:12:28

标签: objective-c xcode delegates viewcontroller

就像免责声明一样,我是iOS初学者,处于一个非常独特的位置。我是一名实习生,在测试应用程序的最后期限,具有特定的规格。所以我很遗憾没有足够的学习xCode和目标C的所有知识。

无论如何,我正在尝试创建一个类似于iPad滑出菜单的导航菜单。我已经看过很多样本代码,以回应过去这样的问题。这一切都很好,但我无法理解他们所做的一切。我认为这是由于视图控制器和代理人相当困惑所致。而且,既然我应该自己写这个,我不能只是建立现有的代码。

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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