我有一个带有 2 个屏幕(MainViewController 和 AboutViewController)的应用程序。用户单击按钮后,我想加载 AboutViewController 屏幕,该屏幕在另一个 XIB 中定义。
看起来很简单,但我今天似乎找不到我的 google-fu。我该如何解决这个问题?
当您调用 时[AboutViewController init]
,它应该调用某种形式的[super init]
,这是 的同义词[UIViewController init]
。发生这种情况时,您的视图控制器将自动查找名为 (在您的情况下) 的 nib 文件AboutViewController.xib
。如果它找到该文件,它会为您将其内容加载到您的视图控制器中。
所以基本上,您需要做的就是初始化您的视图控制器,并确保它与关联的 nib 文件具有相同的名称。
如果您想将具有不同名称的 nib 文件加载到视图控制器中,您可以initWithNibName:bundle:
使用您喜欢的任何 nib 文件的名称显式调用。
如果标准 init(具有同名 nib 文件)不适合您,您可以检查几件事。
UIViewController
子类的 init 方法也调用[super init]
UIViewController
子类的 init 方法使用 About 屏幕,您可能只想显示一个视图,然后将其关闭。因此,与其使用全新的视图控制器,不如只覆盖当前视图。
假设你有一个 ivar
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
NSBundle loadNibNamed: