我有一个iPhone/iPad应用程序屏幕,其中包含我在两个界面构建器文件(xib/nib(中定义的两种可能的布局。当应用程序启动时,我会查看用户默认值,然后选择加载哪个。
但是,如果用户选择设置按钮并加载应用程序内设置菜单并更改布局,然后点击导航按钮返回到上一个屏幕,我如何在不重新启动应用程序的情况下将用户界面/xib文件更改为新选项?
谢谢。
您可以使用强制加载XIB
[[NSBundle mainBundle] loadNibNamed:@"XIBName" owner:self options:nil];
编辑
尝试以下操作:
在一个可以在任何地方使用的实用程序类中添加以下内容。
+ (id)loadNibNamed:(NSString *)nibName ofClass:(Class)objClass {
if (nibName && objClass) {
NSArray *objects = [[NSBundle mainBundle] loadNibNamed:nibName
owner:nil
options:nil];
for (id currentObject in objects ){
if ([currentObject isKindOfClass:objClass])
return currentObject;
}
}
return nil;
}
然后打这样的电话:
MyClass *myClassInstance = [Utility loadNibNamed:@"the_nib_name"
ofClass:[MyClass class]];
另请参阅:带有多个笔尖的单视图控制器?
MyUIViewController *controller;
if (IS_IPAD){
controller = [[MyUIViewController alloc] initWithNibName:@"MyUIViewController_iPad" bundle:nil];
} else {
controller = [[MyUIViewController alloc] initWithNibName:@"MyUIViewController_iPhone" bundle:nil];
}
例如,您可以从导航控制器推送
[self.navigationController pushViewController:controller animated:YES];