注意:我可以通过在我的barbutton和barbutton2方法中将leftbarbuttonitem切换到rightbarbutton项来实现此功能。我只是想知道它为什么不能正常工作!
由于一些奇怪的原因,我的左栏按钮显示,但我的右栏按钮从未弹出!这是我的代码
-(void)barButton {
image = [UIImage imageNamed:@"BBut.png"];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setBackgroundImage: [image stretchableImageWithLeftCapWidth:7.0 topCapHeight:0.0] forState:UIControlStateNormal];
[button setBackgroundImage: [[UIImage imageNamed: @"BBut.png"] stretchableImageWithLeftCapWidth:7.0 topCapHeight:0.0] forState:UIControlStateHighlighted];
[button addTarget:self action:@selector(showlocations:) forControlEvents:UIControlEventTouchUpInside];
button.frame= CGRectMake(3.0, 0.0, image.size.width+1, image.size.height+0);
UIView *v=[[UIView alloc] initWithFrame:CGRectMake(3.0, 0.0, image.size.width+1, image.size.height) ];
[v addSubview:button];
UIBarButtonItem *modal = [[UIBarButtonItem alloc] initWithCustomView:v];
self.navigation.leftBarButtonItem = modal;
-(void)barButton2 {
image2 = [UIImage imageNamed:@"Refresh.png"];
UIButton *button2 = [UIButton buttonWithType:UIButtonTypeCustom];
[button2 setBackgroundImage: [image2 stretchableImageWithLeftCapWidth:0.0 topCapHeight:0.0] forState:UIControlStateNormal];
[button2 setBackgroundImage: [[UIImage imageNamed: @"Refresh.png"] stretchableImageWithLeftCapWidth:0.0 topCapHeight:0.0] forState:UIControlStateHighlighted];
// [button2 addTarget:self action:@selector(viewDidLoad) forControlEvents:UIControlEventTouchUpInside];
button2.frame= CGRectMake(281.0, 5.0, image2.size.width, image2.size.height);
UIView *v2=[[UIView alloc] initWithFrame:CGRectMake(281.0, 5.0, image2.size.width, image2.size.height) ];
[v2 addSubview:button2];
UIBarButtonItem *refresh = [[UIBarButtonItem alloc] initWithCustomView:v2]; self.navigation.rightBarButtonItem = refresh;
NSLog(@"THE ACTION HAS BEEN RECIEVED!"); }
在我的ViewDidLoad方法中,我有这个:
[self barButton2];
[self barButton];
动作确实经过,我确实收到了我的NSLog方法。有谁知道为什么会这样?左栏按钮总是显示,如果我将第一个按钮更改为右栏按钮并将barbutton2更改为leftbarbutton项,然后更改CGRect坐标,它可以工作,这就是我现在正在使用它来使它工作,但为什么会这样呢?提前谢谢。
答案 0 :(得分:2)
您没有看到正确的按钮,因为您正在屏幕外绘制它。
button2
X坐标设置为281.0,其父视图X坐标也设置为281.0。因此,您的按钮位于x = 562,这意味着它位于屏幕之外。
将button2
X坐标设置为0,看看是否有帮助:
button2.frame= CGRectMake(0.0, 5.0, image2.size.width, image2.size.height);
答案 1 :(得分:0)
您似乎正在使用每个操作创建一个新视图并添加一个按钮。所以,你永远不会看到两个按钮。您需要在两个操作中访问相同的视图,以确保添加两个按钮子视图。