Iphone IOS如何在用户选择不同主题时刷新正在运行的应用程序(即强制视图控制器使用不同的nib文件重新加载)

Iphone IOS如何在用户选择不同主题时刷新正在运行的应用程序(即强制视图控制器使用不同的nib文件重新加载),iphone,ios,uiviewcontroller,refresh,nib,Iphone,Ios,Uiviewcontroller,Refresh,Nib,如果您的应用程序的视图控制器具有多个nib文件,从而支持多个UI主题,那么当用户通过应用程序中的“设置”菜单更改主题时,您有哪些选项可以使正在运行的应用程序的视图控制器使用不同的nib文件重新加载其视图 我已经了解了一些基本知识,也就是说,您可以根据存储在NSUserDefaults等位置的设置有条件地加载不同的nib文件。但在此之后,当用户(在应用程序中)更改主题设置时,我有什么选择使更改生效 我想我可以告诉用户,主题更改将在他下次启动应用程序时生效,但是实时的呢?我是否可以强制应用程序重新加

如果您的应用程序的视图控制器具有多个nib文件,从而支持多个UI主题,那么当用户通过应用程序中的“设置”菜单更改主题时,您有哪些选项可以使正在运行的应用程序的视图控制器使用不同的nib文件重新加载其视图

我已经了解了一些基本知识,也就是说,您可以根据存储在NSUserDefaults等位置的设置有条件地加载不同的nib文件。但在此之后,当用户(在应用程序中)更改主题设置时,我有什么选择使更改生效


我想我可以告诉用户,主题更改将在他下次启动应用程序时生效,但是实时的呢?我是否可以强制应用程序重新加载视图,就像它在内存不足时那样?

我认为您可能用了错误的方法

如果你只是根据主题改变颜色和图像,我会考虑创建一个XIB并改变代码中的颜色和图像。

多个XIB的问题是,当真正唯一的变量可能是属性时,您需要维护的内容数量会增加

更改属性要简单得多,还可以引入一个新类来管理主题

e、 g


我认为你可能用错误的方式来处理这个问题

如果你只是根据主题改变颜色和图像,我会考虑创建一个XIB并改变代码中的颜色和图像。

多个XIB的问题是,当真正唯一的变量可能是属性时,您需要维护的内容数量会增加

更改属性要简单得多,还可以引入一个新类来管理主题

e、 g


好建议,我没想到这个。然而,我所想到的主题之间的差异不止这些——例如,标签和按钮的大小和框架不同,以及一个主题中的其他图像不在另一个主题中。所以我仍然倾向于多笔尖的方法。很好的建议,我没有想到这一点。然而,我所想到的主题之间的差异不止这些——例如,标签和按钮的大小和框架不同,以及一个主题中的其他图像不在另一个主题中。所以我仍然倾向于多笔尖方法。
// psuedo class/code
Theme *theme = [[Theme alloc] initWithStyle:ThemeWarm];

self.view.backgroundColor = theme.backgroundColor;
self.view.logo            = theme.logo;