Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在iOS中不使用UIApprance更改一个类的外观?_Ios_Objective C_Iphone_Xcode_Ipad - Fatal编程技术网

如何在iOS中不使用UIApprance更改一个类的外观?

如何在iOS中不使用UIApprance更改一个类的外观?,ios,objective-c,iphone,xcode,ipad,Ios,Objective C,Iphone,Xcode,Ipad,我正在使用主题概念来更改应用程序中的UI外观。我正在使用多个主题。我想更改每个视图控制器导航栏的颜色,但除了RegisterViewController。那么我如何才能做到这一点 我尝试了以下代码 [[UINavigationBar appearance]setTintColor:[UIColor redColor]]; [[UINavigationBar appearanceWhenContainedIn:[RegisterViewController class] ,nil]setTintC

我正在使用主题概念来更改应用程序中的UI外观。我正在使用多个主题。我想更改每个视图控制器导航栏的颜色,但除了RegisterViewController。那么我如何才能做到这一点

我尝试了以下代码

[[UINavigationBar appearance]setTintColor:[UIColor redColor]];
[[UINavigationBar appearanceWhenContainedIn:[RegisterViewController class] ,nil]setTintColor:[UIColor blueColor]];

您的想法是正确的,但问题是RegisterViewController中不包含导航栏。它包含在UINavigationController中

换句话说,如果您有一个导航控制器和多个视图控制器子项,并且您希望其中一些子项的导航栏色调不同于其他子项,则不能使用外观代理来执行此操作,因为在所有情况下,它都是同一个导航控制器和同一个导航栏。没有区别可言


所以你得换个方式。例如,设置导航控制器的委托以根据前面的视图控制器更改导航栏的色调。

您的想法是正确的,但问题是导航栏不包含在RegisterViewController中。它包含在UINavigationController中

换句话说,如果您有一个导航控制器和多个视图控制器子项,并且您希望其中一些子项的导航栏色调不同于其他子项,则不能使用外观代理来执行此操作,因为在所有情况下,它都是同一个导航控制器和同一个导航栏。没有区别可言


所以你得换个方式。例如,设置导航控制器的代理以根据前面的视图控制器更改导航栏的色调。

您可以发布一些代码吗?这将是一个很好的选择help@mattNo,我不会为您编写代码。你问为什么它不能和外观代理一起工作,我解释了。我提供了一个替代策略。好的。如你所愿。谢谢你。你能发布一些代码吗?这将是一个伟大的选择help@mattNo,我不会为您编写代码。你问为什么它不能和外观代理一起工作,我解释了。我提供了一个替代策略。好的,如你所愿。谢谢你