43

これは、ストーリーボードが導入されるまで対処する必要がなかった問題です。UI で競合が発生する可能性がある場合は常に、2 人の開発者が同じ XIB ファイルで同時に作業しないようにしました。XIB 競合の解決を差し控えた理由は、問題のある副作用がある可能性があるためです (XIB は XML 形式で表現されるため、2 つのバージョンをマージする「良い」方法はありません)。

すべての UI 要素が同じ .storyboard ファイル内にあるため、現在この問題に直面しています。プロジェクト内の 2 つの UI 要素で同時に作業を行うことができないため、並行して作業することが非常に困難になります。

この問題に取り組む方法について何か提案はありますか? よろしくお願いいたします。

4

4 に答える 4

39

ストーリーボードを複数のストーリーボードに分割します。

アプリにストーリーボードを 1 つだけ含める理由はありません。ストーリーボードをモジュール ストーリーボードに分割します。+storyboardWithName:bundle:ストーリーボード モジュールをロードするために使用できます。

他の優れたストーリーボードのアイデアについては、UIStoryboard のベスト プラクティスを参照してください。


アップデート

これは問題の完全な解決策ではないことに注意してください。巨大なクラスを小さなモジュールに分解するソース コードでマージ競合が発生する可能性を完全に回避できないのと同様に、ストーリーボード マージ競合の可能性も回避できません。アイデアは、管理可能な問題になるまで可能性を減らすことです。

大規模なコードベースでは常にトリッキーなマージ状況が発生します。適切に分解されたソリューションは、競合の数を減らし、必要なロックアウトの数を最小限に抑えます。

于 2012-07-20T12:05:07.980 に答える
0

これは、解決策を見つけようとして、いじり回していたときに思いついたものです。

Xcodeでストーリーボードファイルを右クリックして[名前を付けて開く]に移動すると、複数のオプションがあることがわかります。デフォルトは「InterfaceBuilder-iOSStoryboard」です。ただし、「ソースコード」を選択することもできます。

ストーリーボードをソースコードモードで開くと、変更を加えることができます(多少の苦痛はありますが)。ただし、他のストーリーボードからコードを追加して、独自に変更を加えることができます。SVNは使用していませんが、gitリポジトリを使用すると、ストーリーボードの他のバージョンを表示してコードをコピーできます。

これが優れた解決策であるとは言えません。IBでストーリーボードを再度開こうとすると、Xcodeがランダムにクラッシュするという問題が発生しました。コードを作品に貼り付けることもあれば、そうでないこともあります。数回、<scene>タグの値を変更する必要がありました。私の経験では、それはかなりの失敗ですが、何かを試す前にファイルをバックアップすると、うまくいく可能性があります。

それが機能する場合は、私に知らせてください-私はこの問題の解決策を見つけることができるかどうかを確認することに興味があります。

于 2012-07-20T13:49:20.233 に答える
-3

最新のソース コード管理ツールもご覧ください。たとえば、Git にはインテリジェントなマージ機能があります。ワークフローのアップグレードを検討すべき理由については、このリンクを参照してください。

于 2012-07-20T12:12:40.913 に答える