17

ストーリーボードをしばらく使用してきましたが、非常に便利であることがわかりましたが、いくつかの制限があるか、少なくとも不自然な方法で物事を行うことができます。アプリには単一のストーリーボードを使用する必要があるように見えますが、適度なサイズのアプリケーションに到達した場合でも、これにはいくつかの問題があります。

  1. ストーリーボードでの競合は解決に問題がある可能性があるため、チーム内での作業はより困難になります(これに関するヒントも歓迎されます)
  2. ストーリーボード自体は非常に雑然としていて、管理できなくなる可能性があります。

だから私の質問は、使用のベストプラクティスは何ですか?

論理タスクを別々のストーリーボードに分割するハイブリッドアプローチを使用することを検討しましたが、これにより、UXフローがコードとストーリーボードの間で分割されます。私にとって、これはログインアクションなどの再利用可能なアクションを作成するための最良の方法のように感じます。

また、私はまだXibsの場所を検討する必要がありますか?この記事には、多くの問題の概要が非常によく記載されており、画面が1つしかないシーンでは、この場合はxibsを使用する必要があることを提案しています。ストーリーボードから接続されていないシーンをインスタンス化するためのAppleのサポートにより、これは私には珍しいと感じます。これは、xibsが将来的に場所を持たないことを示唆しますが、私は間違っている可能性があります。

4

2 に答える 2

23

正解です。ストーリーボードを分割するのが最善の方法です。分解は、UIの一部をより再利用可能にするだけではありません。また、チームでのストーリーボードの使用がより管理しやすくなります。

最近、私のストーリーボードの多くには4つ以下のシーンが含まれています。このようなUIモジュールを1つ以上作成して保守するのは、1人で簡単に行えます。この方法により、マージの競合が減少または排除されます。

他の人が所有するストーリーボードで何か変更が必要な場合は、最初に所有者にローカルな変更があるかどうかを尋ねます。もしそうなら、私は時々所有者に私のために変更を追加してもらいます。分解にはまだある程度の調整が必要ですが、フルアプリのストーリーボードよりも大幅に少なくなります。この練習を始めて以来、マージの問題は発生していません。

XIBについては、私の記事で十分に書いていないと思います。それらはまだ非常に便利です。これらは、シングルビューコントローラーに適しています。しかし、これは彼らが本当に輝いているところではありません。XIBには、ストーリーボードにはない利点が1つあります。XIBの最も基本的なユニットはUIViewですが、ストーリーボードの基本的なユニットはUIViewControllerです。XIBはUIViewのコレクションを保持できるため、カスタムコントロールを視覚的に作成するのに最適です。XIBでは、回転式ダイヤルまたはGPSウィジェットを視覚的に作成できます。次に、これらのコントロールとウィジェットをストーリーボードまたは他のXIBにドロップできます。このようなXIBは、多くのコントロールやウィジェットを保持できる大きな画面を備えているため、iPadアプリでより頻繁に見られます。ストーリーボードのUIViewController内にUISwitchを構築するのは不自然です。

さて、最高のニュースです。Interface Builder内で、コードを記述せずにストーリーボードを接続することが可能です。AppleはiOS6でも同様の機能をリリースする可能性があるため、WWDCの後にこの手法をリリースすることを計画していました。しかし、あなたが尋ねたので、私は今それをリリースすることにしました。RBStoryboardLinkがどのように機能するかについての私の説明を複製するのではなく、私のブログGitHubで詳細を見つけることができます。これにより、UIStoryboardエクスペリエンスがはるかに楽しくなります。

于 2012-06-11T02:19:25.540 に答える
1

この記事では、ストーリーボードを使用するときに多くの問題について言及していることがわかりました。著者が提起した1つのことは、1つのストーリーボードで大量のペン先ファイルを使用することです。

私のルートビューコントローラーは、多くのセグエのソースビューコントローラーになっているため、prepareForSegue:は、多くの「if(segue.identifier isEqualToString:@ "…")」ステートメントが連続して含まれる、ばかげた大きなメソッドになっています。

ストーリーボードのビューコントローラに識別子を割り当てることができます。残念ながら、この識別子プロパティはUIViewControllerクラスで公開されていません。これにより、実行時にViewController階層の安全なイントロスペクションを実行することが非常に困難になります。識別子がビューコントローラとセグエに公開されていれば、本当に素晴らしいでしょう。

そして...もっと他の問題、私はそれが理にかなっていると思いました、そして私は今のところStoryBoardを使うべきかどうか心配しています??

于 2012-10-09T03:33:07.630 に答える