1

ビューコントローラ自体からカスタムの戻るボタンを設定できることはわかっています。たとえば、次のようになります。

- (void)setBackButton
{
    UINavigationBar* navBar = self.navigationController.navigationBar;
    UIButton* backButton = [navBar backButtonWith:[UIImage imageNamed:@"navigationBarBackButton.png"] 
                                        highlight:nil 
                                     leftCapWidth:14.0];

    [backButton addTarget:self action:@selector(backButtonTapped:) forControlEvents:UIControlEventTouchUpInside];

    self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:backButton] autorelease];
}

- (void)backButtonTapped:(id)sender
{
    [self.navigationController popViewControllerAnimated:YES];
}  

問題は、すべてのビューコントローラーに対してそれを行う必要があることです...
1つの解決策は、このコードをいくつかのBasicViewControllerに配置することであり、すべてのビューコントローラーがそれをサブクラス化します。

しかし、私の質問は、UINavigationCotroller自体をサブクラス化して、ナブバーの左ボタンをこのカスタムボタンに設定できるかどうかです。

4

2 に答える 2

2

これを行う正しい方法は、UIAppearance

UIBarButtonItemそれは次のような方法を提供します

- (void)setBackButtonBackgroundImage:(UIImage *)backgroundImage forState:(UIControlState)state barMetrics:(UIBarMetrics)barMetrics

- (void)setBackButtonBackgroundVerticalPositionAdjustment:(CGFloat)adjustment forBarMetrics:(UIBarMetrics)barMetrics

于 2012-06-07T15:10:51.873 に答える
1

いいえ。この動作を処理するカスタムUIViewControllerを用意することをお勧めします。

于 2012-06-07T15:09:44.487 に答える