我想我错过了一些基本的东西,所以我想问一下社区的一些帮助。我正在构建基于基本iPhone实用程序应用程序的应用程序。我的MainView和FlipsideView共享一些元素,所以我为这些块创建了单独的ViewControllers和nib文件。为了做到这一点,我做了以下几件事: 1.创建一个名为searchDateViewController的视图控制器,它是searchDateView.xib的文件所有者。 2. searchDateView.xib基本上是一个UIView,内部带有UILabel,视图连接正确 3.内部都MainViewController.m和FlipsideViewController.m我添加一个子视图作为folllows:superview和parentviewcontroller在添加子视图后为零
- (void)loadView{
[super loadView];
searchDateViewController = [[SearchDateViewController alloc] initWithNibName:@"SearchDateView" bundle:nil];
[[searchDateViewController view] setFrame:[searchDateView frame]];
[[self view] addSubview:[searchDateViewController view]];
...
}
一切都显示和工作得很好。基本上取决于每个主视图和反面视图中发生的操作,笔尖的UILabel已更改。但是,如果searchDateViewController是从MainView或FlipsideView加载的,我想做一些稍微不同的事情。但是,我似乎无法找出哪个ViewController添加searchDateViewController子视图。
在searchDateViewController我想:
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"superview %@", self.view.superview);
NSLog(@"parentviewcontroller %@", self.parentViewController);
}
在这两种情况下,我得到零。
所以我的问题是 - 我可以找出哪个ViewController添加searchDateViewController一个子视图?如果是这样如何?或者如果我的逻辑完全搞砸了,我该怎么做呢?
谢谢!
好的,谢谢你指出我有关子视图和UIViewController子类的正确方向。如果我让SearchDateViewController成为NSObject的一个子类,那么这将如何影响我添加子视图和使用nib启动的方式?我还没有找到任何子视图的例子作为nsobjects而不是视图控制器,但我想在这种情况下开始采用任何标准的做法。如果您有任何更多提示,请告知我,谢谢! 此外 - 你们都建议使用父控制器,这是有道理的,但超视角扮演什么角色?这在这里会更合适吗? – deadroxy 2010-01-14 15:49:33
使SearchDateViewController成为NSObject的一个子类并没有消除你的问题,它只是避免了未来的问题,因为UIViewControllers并不真正用于不占用整个窗口恕我直言的视图。 要解决您的问题,您的视图自定义代码不应该依赖于self.parentViewController或view.superview。相反,在SearchDateViewController中定义一个属性(可以是BOOL或枚举),然后查询它们以决定如何定制视图。创建SearchDateViewController的对象应该设置属性。 – 2010-01-14 19:23:02
我这样做就像你说的在SearchDateViewController类中创建一个属性,它工作正常。然而,我仍然困惑于如何从UIViewController的子类转换为UIView/NSObject。特别是谁成为SearchDateView的文件所有者?我试过每一种方式,我所做的一切都会导致错误。 – deadroxy 2010-01-14 20:42:06