44

私は大規模なストーリーボードを作成していますが、誰かがセグエ識別子に役立つ命名規則を思いついたのではないかと思っていました。

Apple は例で「ShowX」を使用しているように見えます。X は、表示されているビューの名前です。これまでのところ、「PushX」または「ModalX」を使用して、トランジションのタイプを追跡することを好みます。他のトリックやヒントはありますか?

4

4 に答える 4

39
于 2014-11-12T14:58:52.927 に答える
33

この質問に対する正解はありません。味によります。読みやすさのために緩和します。セグエ識別子に長い名前を付けることを恥ずかしがらないでください。Objective-C は非常に冗長な言語であり、非常に読みやすいコードを記述できるようになっているため、長くて表現力豊かな名前を付けてください。

公式の大会を探しましたが、見つかりませんでした。Apple のコメントは次のとおりです。

Interface Builder で識別子をセグエに割り当てます。識別子は、アプリケーションがセグエを別のセグエと区別するために使用する文字列です。たとえば、2 つ以上の異なる宛先ビュー コントローラーにセグエできるソース ビュー コントローラーがある場合、各セグエに異なる識別子を割り当てて、ソース ビュー コントローラーの prepareForSegue:sender: メソッドがそれらを区別し、各セグエを適切に準備できるようにします。 .

Ray Wenderlich のサイトからの別の引用:

セグエに一意の識別子を付けます。(ソース シーン内で一意である必要があるだけです。異なるシーンで同じ識別子を使用できます。)

識別子名を選択するための興味深いアプローチ (詳細については上記のリンクを参照):

  1. インターフェイスビルダーで名前を設定する前に、最初にセグエ識別子名を検証するコードを記述します。私はこのコードについて話している:if ([segue.identifier isEqualToString:@"SegueIdentifierName"])

  2. ビルド&ラン!Interface Builder にはまだ識別子名を入力しないでください。これを行うのは、1 つのビュー コントローラーから複数の発信セグエがある可能性があり、それらを区別できる必要があるためです。作業中のセグエを実行してトリガーしても何も起こらない場合、セグエ名識別子は一意であり、使用するのに適しています。代わりに、コードが意図しないセグエを実行する場合は、セグエ名識別子に競合があります。

  3. 競合があれば修正します。

  4. Interface Builder にセグエ識別子を入力し、目的の動作をテストします。

私がこれを気に入っているのは、TDD アプローチに似ているからです。つまり、失敗するテストを書き、失敗したテストに合格するコードを書き、リファクタリングを繰り返します。

于 2013-10-30T09:47:02.413 に答える
5
"ViewControllerAToViewControllerB"

たとえば、MasterViewController と DetailViewController がある場合、セグエ識別子は次のようになります。

"MasterToDetail"
于 2014-07-18T01:14:28.670 に答える
1

個人的には、前にアニメーション タイプを使用しません。アニメーションを変更する場合は、コードに戻る必要があります。ただし、セグエ識別子をソース コントローラーで定数として宣言すると、後の段階で、コードを掘り下げなくても簡単に名前を変更できます。

私は通常、「ViewController」なしで、コントローラーに付けた名前を使用します。したがって、RatingViewController はストーリーボードとして「Rating」になります。1 つの例外はアンワインド セグエです。「returnTo」で始まり、目的地の名前 (「returnToRating」) で終わるものに名前を付けます。

于 2013-06-24T13:46:46.770 に答える