56

私はiOSが初めてで、どれを学ぶのが最善か疑問に思っていました. こことSOのいくつかの回答を読みましたが、ストーリーボードを使用すると言う人もいれば、最初にXIBを学習すると言う人もいます。XIB を学習するメリットはありますか? XIB は理解しやすく、ストーリーボードに役立ちますか?

4

2 に答える 2

165

両方のアプローチを学ぶことには利点があります。

xib アプローチの歴史的価値とは別に、xib はモジュール性も提供します。おそらく、コードのライブラリを持っているか、作成した便利なウィジェットを共有したいでしょう。xib アプローチを採用すると、その共有と再利用が促進されます。

また、xib アプローチを使用すると、独自のコードに関して柔軟性が向上します。たとえば、iOS 5 にはUITableView、アクセシビリティ/VoiceOver のサポートに関するバグが含まれており、別の方法で文書化されているにもかかわらず、問題が発生-dequeueReusableCellWithIdentifier:する可能性があります (詳細については、このブログ投稿を参照してください)。テーブル ビュー セルを xib から動的にロードすることで、バグを回避することができました。nil

Storyboards でのテーブルとテーブルセルのサポートは素晴らしく、ほとんどの人がテーブルで行う必要があることをサポートしていますが、時には行の外側に色を付ける必要があり、多くの異なるセルが必要になる場合があります。あなたのソリューション。

Storyboard の大きな利点の 1 つは、アプリケーションの GUI フロー全体を表示できることです。ズームアウトすると、すべてがどのように相互接続して流れているかがわかります。xib を使用すると、モジュール性は優れていますが、すべてがどのように接続され、一緒に流れるかを想像するのはより困難です。これは、自分自身にとって、または共有する大規模なチームがある場合に、他の人がアプリの流れを確認できるようにするのに役立つ機能です。

どちらのアプローチにも価値があり、目の前のタスクに最適なツールを選択できるように、両方を知っておくとよいでしょう。

更新 2014-10-06 - 上記を書いて以来、私はより多くのプロジェクトに関わってきました。xib を使用するものもあれば、ストーリーボードを使用できるものもあります。

ストーリーボードは非常に成熟しており (現在 Xcode 6 を使用しています)、ストーリーボードには非常に優れた機能がたくさんあります。私は、xib アプローチではもう少し複雑なストーリーボード内でこれほど多くのことができることを本当に気に入っています。いくつかの例:

1 つは、ストーリーボードで直接プロトタイプ セルを操作する場合、UITableViewまたはUICollectionViewどれだけ操作できるかです。多くの素晴らしく簡単なセットアップ。面倒な作業のほとんどはストーリーボードで行うことができ、コードは少なくて済みます。それはかなりいいです。xib アプローチでこれを実行しようとすることは確かに可能ですが、それを実現するにはさらに多くの作業が必要です。

もう 1 つはUIViewController、通常のセグエを使用して s 間を適切に移行し、巻き戻したセグエで戻ることができることです。最小限のコードで、ストーリーボードに問題ありません。とても便利です。

しかし、いまだに絵コンテを台無しにしてしまうのは、コラボレーション環境で絵コンテを使おうとすることです。なかなかうまく融合しません。また、1 人以上のチームで作業している場合でも、そうではありません。あなた自身がバージョン管理を活用し、独自のワークフローに優れた分岐およびマージ モデルを使用している場合、ある分岐で何らかの変更を加え、別の分岐に持ち込まなければならない時が来るかもしれません。ああ、痛み。私にとって、これは絵コンテを殺すものです。

時間と作業が進化するにつれて、ストーリーボードがプロトタイピングに最適であることがわかりました。物事をすばやく進められることは、ストーリーボードの大きな利点です。それらを使用すると非常に高速です。しかし、スピードにはコストがかかります。一部のプロジェクトの「実際の」コードを記述することになると、xibs に固執するつもりです。これは、より多くの作業が必要になる可能性がありますが、より大きなチームで、または時間の経過とともにうまく機能する、より柔軟なルートだからです。

更新 2015-04-07過去数か月のプロジェクトでストーリーボードを使用せざるを得なくなったため、別の更新です。

まず、何らかのアプローチが必要になるものがあります。たとえば、xibs でサイズ クラスを操作するときに、ストーリーボードで同じことを行うときに、いくつかのエッジ ケース バグが存在したようです。したがって、バグの影響を受けると、どちらか一方の手を強制される可能性があります。もう 1 つは、ストーリーボードは一般にレベルで機能することを覚えておくことです。そのため、ロードするために aまたは a のUIViewControllerようなことを行う必要がある場合は、おそらく xib の方が適しているでしょう。UIViewUICollectionViewCell

2 番目に、なぜこれが最初に思い浮かばなかったのかわかりませんが、プロジェクト全体で 1 つのストーリーボードを使用する必要はありません! ストーリーボードの性質により、人々はそのように引き寄せられると思いますが、それを強制するものは何もないことを覚えておく必要があります (私が認識していること)。

私がうまくいくとわかったのは、一般的に、ストーリーボードごとに各「ビューのグループ化」にアプローチすることです。つまり、多くの場合、ViewController は分離され、ストーリーボード (または xib) ごとに 1 つになる傾向があります。しかし、密接に関連する 2 つの ViewController があり、それらを同じストーリーボードに配置することが理にかなっている場合があります。特に、セグエなど、それらの間を簡単に接続できるためです。

複数のストーリーボードの主な利点は? チームで作業します。このようにして、Fred は自分の絵コンテで作業し、Wilma は自分の絵コンテで作業することができ、マージの問題や作業の調整に関する強い心配はありません。複数のストーリーボード (および通常はストーリーボードごとに 1 つの ViewController) の使用は、複数の開発チームでストーリーボードを使用する際に非常に役立ちました。

Apple が私たちに絵コンテを好むように望んでいることは明らかで、私は最近、絵コンテをもっと受け入れています。複数のストーリーボードを使用しながら、必要に応じて xib を使用することは、現在かなりうまく機能しています。

更新 2015-09-21 Apple がXcode 7をリリースした今、Appleが欠点を克服するために取り組んでいるため、ストーリーボードを採用する理由がさらに増えました。

最も重要な改善点は、ストーリーボード参照です。これにより、あるストーリーボードで別のストーリーボードへの参照を作成できます。作成は非常に簡単で、ストーリーボードをまたがるセグエ (入り口と出口の両方) を使用できるようになりました。私はこれを新しいプロジェクトですでに数回使用しましたが、それはただの喜びです.

もう 1 つの改善点は、ストーリーボード内にスタンドアロンUIViewクラスを作成できることです。ただし、この記事を書いている時点では、結果はさまざまです。単純なケースはうまくいきますが、「複雑な」ものはうまくいきません。たとえば、その中にUIViewControllera がUITableViewありました。5 つの静的セルを含む単純なテーブルになる予定だったのでUITableViewCell、ストーリーボードの ViewController の一部として 5 つの s を単にインスタンス化しました。動作しているように見えましたが、実行時に実際には何もロードされず、表示されませんでした。を動かしたUITableViewCellsはxibになり、すべてが機能しました。私が何か間違ったことをしていたのか、それが何なのかわからないので、YMMV. それでも、たとえいくつかの癖があったとしても、やがて Apple がそれらを解決し、ストーリーボードに対する別の障壁が取り除かれると確信しています。そのようなサポートが必要な場合は、試してみて、それがどのように機能するかを確認してください。大きな約束があります。

ますます、絵コンテは優れたものになりつつあります。

于 2013-03-14T09:36:07.053 に答える
72

ペン先ではできないことで絵コンテではできることがあります。ストーリーボードを使用すると、View Controller 間にセグエを作成でき、テーブル ビュー セルをその場で設計できます。

絵コンテではできなくてペン先でできることがあります。nib では、File's Owner プレースホルダーへの参照を作成できます。複数の最上位ビューを作成して編集し、それらの間の接続を作成できます。 なぜそれをしたいのかの例については、この回答を参照してください。外部オブジェクトのプレースホルダーを追加できます (めったに使用されない機能)。

ストーリーボードには、ゆるやかに関連するさまざまなオブジェクトが 1 つの大きなファイルにまとめられるという欠点があります。複数の開発者と一緒にプロジェクトに取り組んでいる場合、xib ファイルを使用している場合よりもストーリーボードを使用している場合の方が、マージの競合に遭遇する可能性がはるかに高くなります。

ペン先については、いつか必ず学ぶべきです。それらから始めるか、絵コンテから始めるかは、おそらくあまり重要ではありません。好きなチュートリアルをいくつか見つけて、使用するファイルの種類 (nib またはストーリーボード) を使用して作業してください。

于 2012-12-12T07:57:38.630 に答える