Xcode 4.2を使用してiOS 5用のプロジェクトを進めています。 1つのUITableViewControllerがあり、ユーザーが表のセルをタップするとsegueを実行したいが、宛先ビューのコントローラーはそのセルで実行されるアクションに依存する。例えば、ユーザーがセルをタップするとSomeViewControllerをロードしたいのですが、ユーザーが編集モードで同じセルをタップすると、AnotherViewControllerをロードしたいと思います。残念ながら、Xcode 4.2ストーリーボードビルダー内の同じセルに複数のセグを設定する方法はありません。おそらく、コードエディタで手でセグを作成する方法があります。私が達成したいのは、あるビューコントローラを使ってセルで表されるアイテムを「入力」し、別のビューコントローラを使って同じセルが表すアイテムを「編集」する方法をユーザに提供することです。テーブル・エディット・モードになって初めて2番目のビュー・コントローラー(エディター)に切り替えるのは私の最初でしたが、もっと良い方法があるかもしれません。どんな助けもありがとう。UITableViewCellのタップで条件付きセグを実行
答えて
ストーリーボードを見ながら、ソースView ControllerからDestination View Controllerにドラッグ&ドロップします。これにより、ソースView Controllerからプログラムでトリガできるセグが作成されます。 Segueに名前を付けるようにしてください。この名前は、ソースView ControllerのperformSegue:withIdentifier:メソッドに渡されます。
私はこの質問に見られた回答ではしばしば欠落しているビットは、通常、あなたが細胞からそれを切り離したので今セグに。答えは、静的なテーブルビューであっても、あなたのUITableViewControllerに 'tableView:didSelectRowAtIndexPath:'を実装することです。そのメソッドの本体で条件コードを置き、条件が正しいときに 'performSegue:withIdentifier:'を呼び出す – Rhubarb
ポイントは、tableViewプロトタイプセルから複数のセグを設定できるということです。それらに別個の識別子を与えてください。あなたのdidSelectRowAtIndexPathでそのように:if([self.tableview isEditing])条件を設定し、あなたが設定した識別子を使用する際にsegueを引き起こすことができます。 – smileBot
これ以外の多くの場所で上記の選択されたものを読んだ後、ちょうどその理由があります。はです。正解です。通常、 。テーブルビューのセルから次のコントローラにCtrlキーを押しながらドラッグすることで、通常の方法でセグを作成すると、自動的に2つのことが行われます。セル内
- タッチセグエが
を行っているが、もちろん、あなたがセグエをブロックすることはできません
そして今、あなたはする場合は、条件付きセグエ、(他の回答で述べたように)あなたがそのセグエを削除してのUITableViewControllerから新しいものを作成します(オブジェクトナビゲータではなく、ストーリーボードからそれをドラッグして)次へコントローラー - それに名前をつけてください。
そして、これは私が見逃していた部分です。をテーブルビューコントローラに実装することで、以下のようにプログラムで条件付きでsegueを実行できます。
興味のあるセルが選択されているかどうかを確認するために、セルを何らかの形で識別する必要があります。静的なテーブルのインデックスパスを知ることでそれを行うことができますが、私は静的なテーブルなのでデキューする必要はありませんが、IBのセルの一意の識別子を設定してチェックする方が好きです。そうすれば、静的なテーブルでセルを上下に動かすと、このコードを変更する必要はありません。私はセグエでセルを送信する方法
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// Find the selected cell in the usual way
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
// Check if this is the cell I want to segue from by using the reuseIdenifier
// which I set in the "Identifier" field in Interface Builder
if ([cell.reuseIdentifier isEqualToString:@"CellIWantToSegueFrom"]) {
// Do my conditional logic - this was the whole point of changing the segue
if (myConditionForSegueIsSatisfied) {
// Perform the segue using the identifier I was careful to give it in IB
// Note I'm sending the cell as the sender because that's what the normal
// segue does and I already had code counting on that
[self performSegueWithIdentifier:@"SegueIdentifer" sender:cell];
}
}
注 - セルからの通常のセグエがいることをして、私はもともとnilを通過していたし、それに依存していた私のコードは動作を停止しました。
これは古い質問といくつかの偉大な正解があるが、私は、私はこれに遭遇したとき、私が参考に感じたいくつかの追加情報を投稿します:
あなたはCTLによるストーリーボードでセグエを作成した場合+ SomeVCからAnotherVCにドラッグして削除します。
オブジェクトナビゲータで、ctl +は、SomeVCからAnotherVCへのViewControllerレベル(通常はVCの名前の階層の最初の部分)でドラッグします。 segueに一意の識別子を付けます。
上記のように
tableView: didSelectRowAtIndexPath:
を実装します。は、私は偉大な答えをみんなのために
tableView: didSelectRowAtIndexPath:
switch (indexPath.row) { case 0: [self performSegueWithIdentifier:@"yourIDHere" sender:self]; break; case 1: // enter conditional code here... break; case 2: // enter conditional code here... break; // ... for however many cells you require default: break;
}
おかげでswitch
ステートメントを使用することが役に立ったと評価してい。
あなたは簡単に実装することで、カスタムのUIViewControllerのあらゆるセグエの開口部を制御することができます。
override func shouldPerformSegueWithIdentifier(identifier: String, sender: AnyObject?) -> Bool { return true // or false, depending on what you need }
- 1. 条件付きセグの実行方法
- 2. 条件付きセグの使い方
- 3. iOS5で「条件付きセグ」を行う適切な方法
- 4. MBProgressHUD条件付き実行
- 5. 条件付き実行の場合
- 6. TensorFlowの条件付き実行
- 7. Clojureの条件付きバインディングと実行
- 8. モカテストケースの条件付き実行
- 9. 条件ステートメントの戻り値に基づく条件の条件付き実行
- 10. バッチファイル条件付き実行ログ
- 11. MySQL文条件付き実行
- 12. 行の条件付きifelse
- 13. JPAで条件付き@OneToOne関係を実行できるか
- 14. 実行前と実行後の条件付きでの実行中
- 15. 条件付き挿入int hiveを実行できません
- 16. 条件付き集約行
- 17. 条件付き行動
- 18. 条件が真である場合にのみセグを実行する方法
- 19. 複数の春プロジェクトを条件付きで実行する
- 20. は条件付きでグループ化を実行し、ここでパンダ
- 21. 条件付き行をパンダで選択
- 22. 条件付き行SQLでの削除
- 23. 条件付きのJessでのルール実行の終了
- 24. ANTスクリプトでの条件付きタスクの実行
- 25. RailsビューでのJavascriptの条件付き実行
- 26. UIViewをタップしてセグを実行する方法
- 27. スーパーバイザプログラムを条件付きで実行する
- 28. 条件付きでWHERE句を実行するには?
- 29. 条件付きでプログラムを実行する
- 30. Xcode UIテスト:条件付きでテストを実行する
が、私はちょうどそれを考え出しました。それは簡単で、Xcodeのストーリーボードエディタを使って行うことができます。私は別のビューコントローラを指す私のTableViewControllerに2つのセグを追加しました。そして、ユーザがセルを選択し、編集モードで行われるかどうかに応じて、適切なコードをトリガします。以前私は同じセルの魔女に複数のセグを追加しようとしていませんでした。 – Darrarski
これを答えにこだわって、セグをどのように設定するのかを正確に示してくれればうれしいです。 – JohnMerlino
私は同じ問題に直面している、私はソースからseguesと2つの宛先ビューコントローラを持っているが、どのように特定のsegueのをトリガーするのか分からない??? – Bear