2

テーブルビューには未定義のレベル数(深さ)があるので、ビューとそれ自体の間にセグエを作成して、検出するサブレベルがある限りそれを呼び出すことができるようにしたいと思います。どうやってやるの ?

必要なときに[self.navigationViewpushViewController]を直接使用することを考えましたが、新しいコントローラーでSBで定義されたビューを使用したいと思います。

ありがとう、

編集:今のところ私が見つけた唯一の解決策は、VCを複製し、VC1とVC2の間に「showNext」と呼ばれるセグエを設定し、VC1とVC2の間に同じ方法でセグエを設定することです。より良い解決策はありませんか?

4

2 に答える 2

19

動的セル プロトタイプを使用している場合は、明らかに、テーブル ビュー セルからコントローラーへのセグエを問題なく実行できます。

セルからコントローラーへのセグエを作る

セグエを作成すると、次のようになります。

循環セグエ

しかし、セルからセグエを取得できなかったなど、何らかの理由でうまくいかない場合を考えてみましょう (たとえば、didSelectRowAtIndexPathセルを選択するときではなく、 からセグエを呼び出す必要があります)。この場合、その前の手法を使用できませんでした。

この場合、いくつかのオプションがあります。

  1. Chris が指摘したように、iOS 6 以降のみをサポートする場合は、上記の手法を使用しますが、(a) のdidSelectRowAtIndexPath使用selfを確認しsenderてからshouldPerformSegueWithIdentifier、セグエのみを許可する必要がありますsender == self(したがって、senderがテーブル ビュー セルの場合、キャンセルされます);

  2. おそらくもっと簡単ですが、セグエをまったく定義せず、didSelectRowAtIndexPath手動instantiateViewControllerWithIdentifierでビューコントローラーをプッシュ/提示するだけです。また

  3. 次の厄介な回避策を使用できます。要するに、View Controller にボタンを追加します (下部のバーにドラッグします)。ビューには表示されませんが、そのセグエを使用できます。 . まず、丸いボタンをシーンの下部にあるコントローラーのバーにドラッグします。

    ドラッグボタン

    これで、そのボタンからビュー コントローラーへのセグエを作成できます。

    隠しボタンからセグエにする

    したがって、再び自己参照セグエになります。

    最後のボタン セグエ

    そのセグエに識別子を与える必要があるため、 を介してプログラムで呼び出すことができますがperformSegueWithIdentifier、機能します。最もエレガントなソリューションではありませんが、絵コンテに余分なシーンを用意するよりはましだと思います。

これらはどれも理想的ではありませんが、多くのオプションがあります。

于 2012-11-24T16:37:27.037 に答える
0

このプロセスは、私がまったく同じことをするのに役立ちました...

通常どおり、ストーリーボードでテーブルビューを設定します。プロトタイプ セルにセル識別子を付けないでください。セルからコントローラーにドラッグして、上記と同じようにセグエをセットアップします。

あなたのviewDidLoadでセルクラスを登録してください

//register the cell identifier as we are not loading form a storybard
[_aTableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"CellID"];

cellForRowAtIndexPath でセルを設定します

static NSString *CellIdentifier = @"CellID";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

これで、didSelectRowAtIndexPath を使用して performSegueWithIdentifier を呼び出すことができます。prepareForSegue は 1 回だけ呼び出されます。

于 2013-09-25T17:59:25.663 に答える