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;