0

私はuitableviewを持っていて、それを押して新しいviewControllerを開く必要があります。

私は他のクラスで動作するこのコードを使用していますが、このコードでは動作しません。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    NSLog(@"Row selected:%d",indexPath.row);
    UIStoryboard * storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    [[self navigationController] pushViewController:[storyBoard instantiateViewControllerWithIdentifier:@"SingleCamera"] animated:YES];

}

これは私がこれまでに使用したコードであるため、理由はわかりません。私が付けた識別子は再生されません。どこにも行きません。

私もこれを試しました:

[self performSegueWithIdentifier:@"SingleCamera" sender:tableView];

しかし、私はNSInvalidargumentエラーが発生しています

編集: 私のプロジェクトの構造は次のとおりです: ナビゲーション コントローラーと初期ビュー A があります。ビュー A から、まったく同じコードを使用してビュー B に移動します。ビュー B からビュー C に移動します。ストーリーボード内ではセグエ モード モーダルを使用し、ビュー C では上記のコードが使用される tableviewcontroller です。

4

1 に答える 1

1

代わりにこれを書いてください:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    NSLog(@"Row selected:%d",indexPath.row);
    UIViewController *viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"SingleCamera"];
    [[self navigationController] pushViewController:viewController animated:YES];
}

の行にブレークポイントを設定してpushView...、viewController がインスタンス化されているかどうかを確認します。

編集:

についてはperformSegue...、絵コンテにそのセグエがある岸を作ります。

于 2012-12-30T12:34:17.407 に答える