2

実際の戻るボタンとまったく同じように機能するカスタマイズされた戻るボタンを作成しています。以下は私のコードです

UIButton *cusBack = [UIButton buttonWithType:101];
[cusBack setTitle:@"Back" forState:UIControlStateNormal];
[cusBack addTarget:self action:@selector(clickBack) forControlEvents:UIControlEventTouchUpInside];

self.view addSubView:cusBack;

ここに私のセレクターがあります:

-(void)clickBack{
PrevPage *pPage = [[PrevPage alloc] init];
[self.navigationController pushViewController:pPage animated:YES];
[pPage release];
}

実際には機能しますが、作成される方向は右から左です。しかし、最近のページに戻るので、ページをLEFTからRIGHTに移動したい

ありがとう!

4

1 に答える 1

0

戻るボタンと同じ動作をさせたい場合は、別の方法を試す必要があります。

-(void)clickBack{          //Your presenting view controller will always be the last view controller on the stack.                  
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:self.navigationController.viewControllers.count-1] animated:YES];
}

また、以前のビュー コントローラーに変更を加える必要がある場合は、そのヘッダー ファイルをインポートするだけで、ビュー コントローラーをポップする前にそのプロパティとパブリック メソッドを使用できます。

#import "MyPreviousViewController.h"
...
-(void)clickBack{
[self.navigationController.viewControllers objectAtIndex:self.navigationController.viewControllers.count-1].title = @"Change title for previous view controller";
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:self.navigationController.viewControllers.count-1] animated:YES];
}

現在、スタックから最後のView Controllerをポップする(オブジェクトも解放する)代わりに、スタックに新しいView Controllerを実際にプッシュし続けるため、実際の戻るボタンのように戻るボタンは機能しません。このスタックが大きくなりすぎると、問題が発生する可能性があります。

于 2012-09-03T11:14:32.053 に答える