0

プロジェクトにタブバーがあり、各タブバーにはテーブルビューがあります。以下のようにテーブルビューの行をクリックすると詳細画面を開きたい。しかし、何も起こりません。私がやっている間違いはどこですか。ロジックをどのように設定すればよいですか。

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
DetailScreen *detail = [[DetailScreen alloc] initWithNibName:@"DetailScreen" bundle:nil];
 [self.navigationController pushViewController:detail animated:YES];
[detail release];

}

4

6 に答える 6

2

セルをクリックしても何も起こらない理由は多数考えられます。

  • このメソッドにブレークポイントを置きます。それは呼び出されていますか?
  • アプリがブレークポイントで停止したpo detail後、インスタンスが初期化された後にコンソール タイプに移動します。そうでないことを確認してください (null)
  • また、入力po [self navigationController]して、ナビゲーション コントローラーが存在するかどうかを確認します。

おそらく、ナビゲーション コントローラーを持っていません。tabbarcontroller はどのように作成していますか? インターフェイス ビルダーで、または AppDelegate のdidFinishLaunchingWithOptions:メソッドのコードを介して?

あなたはこれをしましたか?

    YourViewController *yourVC = [[YourViewController alloc] initWithNibName:@"YourViewController" bundle:nil];

    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:yourVC];

    self.tabBarController.viewControllers = [NSArray arrayWithObjects:navigationController, nil];
于 2012-09-06T08:45:35.653 に答える
1

ナビゲーションコントローラーを持っていないので

[self.navigationController pushViewController:detail animated:YES];

動作しないでしょう。

使用する

[self.view addSubview:detail.view]

また

[self presentModalViewController:detail animated:YES];

代わりは

于 2012-09-06T13:31:12.490 に答える
1

これを試して、

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
     DetailScreen *detail = [[DetailScreen alloc] init];
     [self.navigationController pushViewController:detail animated:YES];
     [detail release];
}
于 2012-09-06T13:12:48.477 に答える
0

ビューコントローラー(コントローラーを含むテーブルビュー)をナビゲーションコントローラーに追加してから、使用を開始します

DetailScreen *detail = [[DetailScreen alloc] initWithNibName:@"DetailScreen" bundle:nil];
    [self.navigationController pushViewController:detail animated:YES];
于 2012-09-06T10:52:28.517 に答える