1

私はナビゲーションベースのアプリケーションをやっています。アプリケーションについて少し説明させてください。プログラムロードテーブルビューでは、次のような3つのオプションが表示されます。

  • ホテル
  • レストラン
  • カフェ

ユーザーが上記のオプションのいずれかを選択すると、別のテーブルビューに移動し、サブオプションが表示されます。そしてそれは6から7レベルまで続きます。したがって、私didSelectRowAtIndexPath:はtableViewのクラス(Sales)で独自のオブジェクトを作成し、それを使用し[self.navigationController pushViewController:myViewController animated:YES];て別のビューを作成し、データベースからのデータをバインドします。それは私にとってはうまく機能していますが、問題はです。ナビゲーションバーに自動的に表示される「戻る」ボタンが表示されません。

私の実装はこのようなものです

@implementation Sales

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath  {
 Sales *myViewController  = [[Sales alloc] initWithNibName:@"Sales"];
 [self.navigationController pushViewController:myViewController animated:YES];
 //Do other stuffs here
}

@end

このように、私はすべてのレベルを表示しています。しかし、オプション内を移動したときに、戻るボタンが表示されませんでした。(通常、ホテルに移動すると、detailViewが表示され、ナビゲーションバーに戻るボタンが表示されますが、この場合、これは発生しません)。同じクラスのオブジェクトを作成して表示することが問題だと思いますが、そのような数のクラスとビュー(合計で約43レベル)を作成することはできません。この問題を解決するにはどうすればよいですか(ナビゲーションバーに戻るボタンを表示するにはどうすればよいですか)。私の方法は良い方法ですか、それともこの問題の代替解決策はありますか?前もって感謝します。

4

2 に答える 2

2

「戻る」ボタンを作成すると、「次の」レベルになります。したがって、「現在のナビゲーションコントローラー」の戻るボタンは前のレベルで作成されました...はい、少し混乱します。

これについては、「iLessons iLearned:カスタムbackBarButtonItemを定義する方法」でブログに書いていますが、戻るボタンを作成するためのサンプルコードは次のとおりです。

- (void)viewDidLoad
{
[super viewDidLoad];
UIBarButtonItem *backButton =
  [[UIBarButtonItem alloc]
    initWithTitle:@"My Back"
    style:UIBarButtonItemStyleBordered
    target:nil
    action:nil];
self.navigationItem.backBarButtonItem = backButton;
[backButton release];
}

正しいnavigationControllerで使用していることを確認してください。

于 2012-06-18T19:26:47.587 に答える
2

同じクラスのViewControllerをプッシュするメソッドは問題ありません。エラーは他の場所にある必要があります。

  • ビューコントローラに。があるかどうかを確認しますtitle。これは、子ViewControllerが表示されているときに戻るボタンに表示されるテキストです。そのテキストがある場合、nil戻るボタンはありません。
于 2012-06-18T18:36:01.023 に答える