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