-1

カスタムの戻るボタンにこれらのコードを使用しています

UIImage *buttonImage = [UIImage imageNamed:@"back-button-2.png"];

    //create the button and assign the image
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    [button setImage:buttonImage forState:UIControlStateNormal];

    //set the frame of the button to the size of the image (see note below)
    button.frame = CGRectMake(0, 0, buttonImage.size.width, buttonImage.size.height);

    [button addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside];

    //create a UIBarButtonItem with the button as a custom view
    UIBarButtonItem *customBarItem = [[UIBarButtonItem alloc] initWithCustomView:button];
    self.navigationItem.leftBarButtonItem = customBarItem;

これがバック機能です

-(void)back {   
    // Tell the controller to go back
    [self.navigationController popViewControllerAnimated:YES];
}

カスタムの戻るボタンが表示されますが、機能していません。

4

5 に答える 5

1
self.navigationItem.leftBarButtonItem = [self getBackBtn];



- (UIBarButtonItem *) getBackBtn
{
    UIButton * backBtn=[UIButton buttonWithType:UIButtonTypeCustom];
    [backBtn setFrame:CGRectMake(0.0f,0.0f,73.0f,33.0f)];
    [backBtn setImage:[UIImage imageNamed:[NSString stringWithFormat:@"back.png"]] forState:UIControlStateNormal];
    [backBtn addTarget:self action:@selector(backBtnPressed) forControlEvents:UIControlEventTouchUpInside];
    UIBarButtonItem *backBarButton = [[UIBarButtonItem alloc] initWithCustomView:backBtn];
    return backBarButton;    
}

//Action For LeftBarButton - BackButton
- (void)backBtnPressed
{
    [self.navigationController popViewControllerAnimated:YES];
}
于 2012-08-29T14:57:22.953 に答える
0

カスタムビューのcustomBarItem代わりにターゲットを追加してみてくださいbutton

于 2012-08-29T14:56:14.233 に答える
0

別の方法でカスタムUIBarButtonItemを実行し、矢印の形を維持することができます

最初のコントローラーがAで、AコントローラーのviewWillAppearでBにプッシュしたとすると、次のことができます。

self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"whatever.png"] style:UIBarButtonItemStyleBordered target:nil action:nil];

これにより、Bの戻るボタンは通常の戻るボタンになりますが、選択した画像が表示されます

代わりにカスタムテキストが必要な場合は、次のことができます

self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"title" style:UIBarButtonItemStyleBordered target:nil action:nil];
于 2012-08-29T15:01:36.303 に答える
0

これUIBarButtonBarItemは、イベントがそれ自体を処理し、カスタムの戻るボタンがある場所にイベントを渡すことは決してないためです。UIViewこの行のスポット、サブビューとしてのみ追加しました。

UIBarButtonItem *customBarItem = [[UIBarButtonItem alloc] initWithCustomView:button];

表示されますが、からイベントのフィードバックを受け取ることはありませんUIBarButtonItem。これはビューのみであり、親UIBarButtonItemは処理するイベントを単純なに渡しませんUIView。それは論理的な振る舞いではないので、これは完全に問題ありません。


セレクターUIBarButtonItemなどを追加する必要があります

[customBarItem setAction:@selector(back)];

あなたのためではありませんUIButton


...または、次のように戻るボタンを追加できます

[self.navigationItem setBackBarButtonItem:[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:self action:@selector(back)]];

クラスの他のinitメソッドを使用UIBarButtonItemしてカスタマイズできます。これらは、UIBarButtonItemクラスリファレンスにあります。

于 2012-08-29T15:26:38.593 に答える
-2

ここで試してください: http ://www.raywenderlich.com/4344/user-interface-customization-in-ios-5

これが私が使用したものです。基本的に、このメソッドをアプリデリゲートに追加します。

- (void)customizeAppearance
{

    UIImage *buttonBack30 = [[UIImage imageNamed:@"button_back_textured_30"] 
        resizableImageWithCapInsets:UIEdgeInsetsMake(0, 13, 0, 5)];
    [[UIBarButtonItem appearance] setBackButtonBackgroundImage:buttonBack30 
        forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
}
于 2012-09-03T11:13:42.257 に答える