2012年2月27日月曜日

iPhone UINavigationControllerの戻るボタンについて色々

数ヶ月前に知っておけば私は、1日程無駄に開発する必要がなかった・・・
初投稿はUINavigationControllerのbackButtonについてです。

UINavigationControllerを使用して画面遷移を行うと普通はこうなります。

 

次の画面の左上ボタンは「最初の画面」となります。
これは前画面のタイトルをボタン名にしているためです。

これを「戻る」とボタンのテキストだけ変えたい時はこうします。
これを”遷移前の画面”のviewDidLoad辺りに入れます

UIBarButtonItem *backButton = [UIBarButtonItem new];
backButton.title = @"戻る";
self.navigationItem.backBarButtonItem = backButton;
結果はこれ











遷移後ではbackButtonのテキストを変えることができません。

遷移後で変える場合はこのようにします。

UIBarButtonItem *barButton = 
[[UIBarButtonItem alloc] initWithTitle: @"戻る"
                                     style: UIBarButtonItemStylePlain
                                    target: self
                                    action: @selector(backButtonPressed:)];
self.navigationItem.leftBarButtonItem = barButton;
[barButton release];

ただこの場合、ボタンの形がホームベース型から四角型になる上に、自前でイベント処理を入れないとボタンが反応しないという事態に陥ります。
この実装では@selector(backButtonPressed:)と自前のイベント処理をしていますが、以下のように変更すると、NavigationControllerのpopToViewControllerを呼び出せます。

targetself.navigationController
action@selector(popViewControllerAnimated:)];


これ知ってれば苦労しなかったのにorz

0 件のコメント:

コメントを投稿