我有一个2屏幕(MainViewController和AboutViewController)的应用程序。当用户点击一个按钮时,我想加载在另一个XIB中定义的AboutViewController屏幕。如何加载XIB?
似乎很简单,但我今天似乎无法找到我的google-fu。我该如何解决这个问题?
我有一个2屏幕(MainViewController和AboutViewController)的应用程序。当用户点击一个按钮时,我想加载在另一个XIB中定义的AboutViewController屏幕。如何加载XIB?
似乎很简单,但我今天似乎无法找到我的google-fu。我该如何解决这个问题?
当你调用[AboutViewController init]
,它的预期调用某种形式的[super init]
,这是[UIViewController init]
的代名词。发生这种情况时,视图控制器会自动寻找名为(在你的情况下)AboutViewController.xib
的nib文件。如果它找到该文件,它会将它的内容加载到您的视图控制器中。因此,基本上,您只需要初始化视图控制器,并确保其与关联的nib文件具有相同的名称。
如果您想在您的视图控制器中加载具有不同名称的笔尖文件,您可以明确地调用initWithNibName:bundle:
,并选择您喜欢的任何一个nib文件的名称。
如果标准init(具有相同名称的nib文件)不适合您,那么您可以检查几件事情。
UIViewController
子类的init方法并还呼吁[super init]
UIViewController
子类的init方法一个NSBundle loadNibNamed:
With a About屏幕,您可能只想显示一个视图然后关闭它。因此,而不是使用全新的视图控制器,您可以覆盖当前的视图。
假设你有伊娃
UIView *aboutUsView;
与相应的属性。
在您的视图控制器做:
[[NSBundle mainBundle] loadNibNamed:@"AboutUsView" owner:self options:nil]; // Retains top level items
[self.view addSubview:aboutUsView]; // Retains the view
[aboutUsView release];
要删除的观点,说在连接到该视图一个按钮的操作,这样做:
[aboutUsView removeFromSuperview], aboutUsView = nil; // Releases the view
他特别说他有两个视图控制器,“MainViewController和AboutViewController”不是视图控制器和视图。 – mahboudz 2009-09-21 03:26:47
正确。我特别说过,他可能不需要他们两人来达到他所说的目标。 – 2009-09-24 03:56:23
这似乎是明显的方法。 – user1432813 2012-07-19 14:43:41
我不知道XIBs是自动加载喜欢这个。谢谢! – DOOManiac 2011-08-09 04:01:12