iPhone SDK,在ViewDidPear上或运行时的任何时候替换XIB/NIB文件



我有一个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];

相关内容

最新更新