Ios Can';t将右按钮添加到UINavigationBar

Ios Can';t将右按钮添加到UINavigationBar,ios,objective-c,uinavigationcontroller,uinavigationbar,Ios,Objective C,Uinavigationcontroller,Uinavigationbar,我已经将UINavigationController子类化为我的pop&push需求,现在我想向UINavigationBar添加一个自定义背景图像和一些自定义按钮。 我已经读到,我可以在appdelegate中执行它(从iOS 5开始),但我希望将它保留在UINavigationController子类中,以备将来使用 我试过这样做: -(void)viewDidLoad { [super viewDidLoad]; UIButton *rightbutton = [UIBut

我已经将
UINavigationController
子类化为我的pop&push需求,现在我想向
UINavigationBar
添加一个自定义背景图像和一些自定义按钮。 我已经读到,我可以在appdelegate中执行它(从iOS 5开始),但我希望将它保留在
UINavigationController
子类中,以备将来使用

我试过这样做:

-(void)viewDidLoad
{
    [super viewDidLoad];
    UIButton *rightbutton = [UIButton buttonWithType:UIButtonTypeCustom];
    [rightbutton setFrame:CGRectMake(280, 0, 56, 39)];
    [rightbutton setImage:[UIImage imageNamed:@"top.png"] forState:UIControlStateNormal];
    [rightbutton addTarget:self action:@selector(popMePlease) forControlEvents:UIControlEventTouchUpInside];
    UIBarButtonItem *rightBarButton=[[UIBarButtonItem alloc] initWithCustomView:rightbutton];
    [[self  navigationItem] setRightBarButtonItem:rightBarButton];
}

但我看不到右边的按钮。我不知道是否要将它放入
viewDidLoad

在代码按钮中,x位置从280开始。它应该接近0

替换以下行

[rightbutton setFrame:CGRectMake(280, 0, 56, 39)];

试试这个代码

 UIBarButtonItem *btn = [[UIBarButtonItem alloc]
                       initWithCustomView:myButton];
        self.navigationItem.rightBarButtonItem=btn;

-(void)Action
{

// Do what you want here 

}

试试这段代码可能会对您有所帮助…

试试这段代码,它工作正常

UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];
myButton.frame = CGRectMake(0, 0, 40, 40);
[myButton setBackgroundImage:[UIImage imageNamed:@"imTitleBG.png"] forState:UIControlStateNormal];
UIBarButtonItem *rightBtn = [[UIBarButtonItem alloc]initWithCustomView:myButton];
self.navigationItem.rightBarButtonItem = rightBtn;

检查图像名称后,您的代码工作正常?图像不是问题,因为如果我添加这行代码,我将看到视图上的按钮:
[self.view addSubview:rightbutton]为什么要在代码中编写
[self-navigationItem]…
?不应该是
[self.navigationItem]…
?不,位置不是问题。除了位置,我在您的代码中找不到任何问题。它应该会起作用。可能是导航堆栈中的当前视图控制器。您可以通过UINavigationController的viewControllers属性进行检查。是的,将UIButton设置为UIBarButtonItem的自定义视图时,其x值没有意义。
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];
myButton.frame = CGRectMake(0, 0, 40, 40);
[myButton setBackgroundImage:[UIImage imageNamed:@"imTitleBG.png"] forState:UIControlStateNormal];
UIBarButtonItem *rightBtn = [[UIBarButtonItem alloc]initWithCustomView:myButton];
self.navigationItem.rightBarButtonItem = rightBtn;