0

私は持っていUINavigationControllerて、デフォルトの戻るボタン「戻る矢印スタイル」を維持する必要があります新しいものを作成せずに戻るボタンのアクションを変更してそのスタイルを変更できるかどうかを尋ねたいだけです

4

5 に答える 5

1

私の知る限り、デフォルトの戻るボタン自体のアクションを変更することはできませんが、UIBarButtonItem を leftBarButtonItem として配置し、独自のアクションを割り当てることができます。

leftBarButtonItem が定義されている場合、これが表示され、デフォルトの戻るボタンではありません。

ただし、このようなトリックを行うときは、GUI のガイドラインに留意してください。

于 2012-08-27T07:30:49.310 に答える
1

いいえ。カスタムの戻るボタンが必要な場合は、カスタムの UIBarButtonItem を作成してから、適切なプロパティに割り当てる必要があります。

self.navigationItem.backBarButtonItem = myCustomBackItem;
于 2012-08-27T07:28:50.093 に答える
0

カスタム ボタンを作成してアクションを実行することはできますが、デフォルトの backButton アクションを変更することはできません.....

self.navigationItem.leftBarButtonItem = getBackBtn;
于 2012-08-27T07:36:28.553 に答える
0

UINavigationController は、ViewController をプッシュおよびポップするときに、デリゲートにメッセージを送信します。

<UINavigationControllerDelegate>以下を実装し、.h ファイルに追加することで、戻るボタンが押されたタイミングを確認できます。

-(void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    self.navigationController.delegate = self;
}

-(void)viewDidDisappear:(BOOL)animated{
    [super viewDidDisappear:animated];
    self.navigationController.delegate = nil;
}

-(void)navigationController:(UINavigationController *)navigationController
     willShowViewController:(UIViewController *)viewController 
                   animated:(BOOL)animated{

    //Test here if the View Controller being shown next is right below the current
    //    ViewController in the navigation stack
    //
    //Test by:
    // 1. comparing classes, or
    // 2. checking for a unique tag that you previously assigned, or
    // 3. comparing against the [navigationController viewControllers][n-2] 
    //        where n is the number of items in the array

    if ([viewController isKindOfClass:NSClassFromString(@"ViewControllerClassThatGetsPushedOnBACK")){
        //back button has been pressed
    }

    if (viewController.tag == myUniqueTagIdentifier){
        //back button has been pressed
    }

    if ([navigationController.viewControllers[navigationController.viewControllers.count-2]==viewController]){
        //back button has been pressed
    }
}

Apple Docs UINavigationController クラス リファレンス:

ルート ビュー コントローラーは配列のインデックス 0、バック ビュー コントローラーはインデックス n-2、トップ コントローラーはインデックス n-1 にあります。ここで、n は配列内の項目の数です。

于 2012-08-27T07:39:22.250 に答える
0

UINavigationBar の戻るボタンは、新しい UIView をプッシュするとすぐに自動的に生成されます。戻るボタンをカスタマイズするには、新しい UIToolBar + カスタム ビューを持つ UIBarButtonItem を作成します。

以下のコードは、UIToolBar でカスタム UIBarButtonItem を使用するサンプルです。

    // create button
UIButton* backButton = [UIButton buttonWithType:101]; // left-pointing shape!
[backButton addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside];
[backButton setTitle:@"Back" forState:UIControlStateNormal];

// create button item -- possible because UIButton subclasses UIView!
UIBarButtonItem* backItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];

// add to toolbar, or to a navbar (you should only have one of these!)
[toolbar setItems:[NSArray arrayWithObject:backItem]];
navItem.leftBarButtonItem = backItem;

以下のリンクは、さらに変更するための PSD 形式の iOS ボタンのデザインです。

http://www.chrisandtennille.com/pictures/backbutton.psd

于 2012-08-27T07:35:09.150 に答える