Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.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 Can';不要改变uibarbuttonite的背景_Ios_Objective C_Uibarbuttonitem_Uiappearance - Fatal编程技术网

Ios Can';不要改变uibarbuttonite的背景

Ios Can';不要改变uibarbuttonite的背景,ios,objective-c,uibarbuttonitem,uiappearance,Ios,Objective C,Uibarbuttonitem,Uiappearance,我需要在一个ViewController中更改UIBarButtonItem的默认(已在我的AppDelegate中声明)背景 因此,在我的AppDelegate中,我有: UIImage *navBarItemBackground = [UIImage imageNamed:@"navbar_button_green"]; [[UIBarButtonItem appearance] setBackgroundImage:navBarItemBackground

我需要在一个ViewController中更改UIBarButtonItem的默认(已在我的AppDelegate中声明)背景

因此,在我的AppDelegate中,我有:

UIImage *navBarItemBackground = [UIImage imageNamed:@"navbar_button_green"];
[[UIBarButtonItem appearance] setBackgroundImage:navBarItemBackground
                                            forState:UIControlStateNormal
                                               style:UIBarButtonItemStyleBordered
                                          barMetrics:UIBarMetricsDefault];
当我需要恢复按钮的默认背景时,我在viewController中实现:

self.navigationItem.rightBarButtonItem = nil;
UIBarButtonItem *rightBarItem = [[UIBarButtonItem alloc] initWithTitle:@"Сохранить" style:UIBarButtonItemStyleBordered target:self action:@selector(clickOnSend:)];
[rightBarItem setBackgroundImage:[UIImage imageNamed:@""] forState:UIControlStateNormal style:UIBarButtonItemStyleBordered barMetrics:UIBarMetricsDefault];
self.navigationItem.rightBarButtonItem = rightBarItem;

但我认为将空文件设置为图像是不正确的。有没有更简单的方法来实现这种行为?谢谢

您应该将代码更改为:

UIBarButtonItem * rightBarItem = [[UIBarButtonItem alloc]
                                           initWithTitle: @"Сохранить"
                                           style: UIBarButtonItemStyleBordered
                                           target: nil action: nil];
UIImage *navBarItemBackground = [[UIImage imageNamed:@"navbar_button_green"]resizableImageWithCapInsets:UIEdgeInsetsMake(0, 13, 0, 6)];
[[UIBarButtonItem appearance] setBackgroundImage:navBarItemBackground
                                                forState:UIControlStateNormal
                                              barMetrics:UIBarMetricsDefault];

[self.navigationItem setBackBarButtonItem: rightBarItem];

如果您只想更改一个或多个
UIViewController的
UIBarButtonItems
backgroundImage,最好更改特定的
UIViewController
s,就像您使用的后一种情况一样。而
[[uibarbuttonite外观]setBackgroundImage:forState:style:barMetrics:]
将更改所有
UIBarButtonItems
背景图像,这可能不是更好的图像。

我需要在一个viewController中只保留一个默认按钮-其他按钮应随外观更改。应用此代码更改所有按钮,并使用不带[UIBarButtonItem外观]的特定代码到需要默认值的viewController。是的,代码的第二部分放置在单独的viewController中。但是我需要为这个按钮保留默认的iOS6背景,对于其他所有按钮,我需要用外观更改背景。@ShurupuS然后你只需将nil传递给image参数,它应该可以工作。是的-它可以工作,只是尝试使用这个解决方案-不,代码看起来简单一点。谢谢