4

左ボタンを正しく機能させ、戻るボタンを模倣するために何時間も努力しています。

ボタンを作成するための私のコード:

UIBarButtonItem *backButton = [self customBarButton:@"back_button" imageHiglighted:@"settings_button_highlighted" x:20 y:0 widthDivider:2.6 heightDivider:2.6];

backButton.target = self;
backButton.action = @selector(buttonPressed:);

self.navigationItem.leftBarButtonItem = backButton;

ここで、カスタムボタンを作成するために呼び出されるメソッドは次のとおりです。

- (UIBarButtonItem *)customBarButton:(NSString *)imageDefault imageHiglighted:(NSString *)imageHighlighted x:(float)x y:(float)y widthDivider:(float)widthDivider heightDivider:(float)heightDivider {

UIImage *customImageDefault = [UIImage imageNamed:imageDefault];
UIImage *customImageHighlighted = [UIImage imageNamed:imageHighlighted];

CGRect frameCustomButton = CGRectMake(x, y, customImageDefault.size.width/widthDivider, customImageDefault.size.height/heightDivider);

UIButton *customButton = [[UIButton alloc] initWithFrame:frameCustomButton];

[customButton setBackgroundImage:customImageDefault forState:UIControlStateNormal];
[customButton setBackgroundImage:customImageHighlighted forState:UIControlStateHighlighted];

UIBarButtonItem *barCustomButton =[[UIBarButtonItem alloc] initWithCustomView:customButton];

return barCustomButton;

}

そしてアクション:

-(void)buttonPressed:(id) sender{

    NSLog(@"Entered");
    SearchViewController *ViewController = [[SearchViewController alloc] init];
    [self.navigationController pushViewController:ViewController animated:YES];

}

だから私は単純なUIButtonでそれを作ることができましたが、UIButtonBarItemでそれを作ることはできませんでした、そして私はそれで何が起こっているのか本当にわかりません。

あなたが私を助けることができれば私は非常に感謝するでしょう。

ありがとう。

4

7 に答える 7

7

これをselectorカスタムbuttonに追加してください。viewbar

[customButton addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];

編集:: のtargetactionは にUIBarButtonItem適用されcustom viewsます。

于 2012-08-27T06:56:38.230 に答える
7
UIButton *button =  [UIButton buttonWithType:UIButtonTypeCustom];
[button setImage:[UIImage imageNamed:@"goback.png"] forState:UIControlStateNormal];
[button addTarget:self action:@selector(//HERE ! i don't know put what thing !) forControlEvents:UIControlEventTouchUpInside];
[button setFrame:CGRectMake(0, 0, 32, 32)];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];
于 2012-08-27T07:02:10.913 に答える
1

これを試して

self.navigationItem.leftBarButtonItem=[[UIBarButtonItem alloc] initWithCustomView:[GlobalMethods buttonWithImage:@"top-nav-back" heighlightImageName:nil buttonFrame:CGRectMake(102, 1, 50, 30) selectorName:@selector(btnBackClicked:) target:self]];


+ (UIButton*)buttonWithImage:(NSString*)normalImageName heighlightImageName:(NSString*)heighlightImageName buttonFrame:(CGRect)buttonFrame selectorName:(SEL)selectorName target:(id)target
{
    UIButton *objButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [objButton setFrame:buttonFrame];
    [objButton addTarget:target action:selectorName forControlEvents:UIControlEventTouchUpInside];
    [objButton setImage:[GlobalMethods getImageFromResourceBundle:normalImageName] forState:UIControlStateNormal];
    if(heighlightImageName)
        [objButton setImage:[GlobalMethods getImageFromResourceBundle:heighlightImageName] forState:UIControlStateDisabled];
    if(heighlightImageName)
        [objButton setImage:[GlobalMethods getImageFromResourceBundle:heighlightImageName] forState:UIControlStateSelected];
    return objButton;
}
于 2012-08-27T06:53:06.440 に答える
0

これは私のために働いた

UIButton * tmpButton = [self generateButtonwithImageName:@"Back.png" andSize:CGRectMake(0, 0, 55, 30)];
UIBarButtonItem * backButton = [[UIBarButtonItem alloc] initWithCustomView:tmpButton];
[tmpButton addTarget:self action:@selector(reload) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.leftBarButtonItem=backButton;


-(UIButton*)generateButtonwithImageName :(NSString*)imageName andSize:(CGRect)rect{
  UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom];
  button.frame=rect;
  [button setBackgroundImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal];
  return button;
}
于 2013-08-13T13:54:21.093 に答える
0

これを試して..

[customButton addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];

あなたのcustomBarButtonメソッドで..私は、バーボタンアイテムの代わりにあなたのボタンにセレクターを与えると言うことを意味します..

確認して返信..

于 2012-08-27T07:02:15.033 に答える
0

この行をコードに入れるだけです..

[backButton addTarget:self action:@selector(backBtnPressed:) forControlEvents:UIControlEventTouchUpInside];
于 2012-08-27T07:08:12.027 に答える