2012-03-14 4 views
4

UIViewControllerを継承し、designer.csクラスをストーリーボードにリンクしたクラスの名前を変更する最も良い方法は何ですか?MonoTouch MonoDevelopでコントローラークラスの名前を変更

まず、MonoDevelopで.csファイルの名前を変更しようとしました。これはうまくいきましたが、designer.csファイルの名前が変更されず、クラス名も変更されませんでした。

次に、クラス名の名前を変更しました。これにより、.csignファイルと.designer.csファイルのクラス名は正常に変更されましたが、.designer.csファイル名は変更されませんでした。また、Xcodeのコントローラの「カスタムクラス」の名前も変更されませんでした。

XCodeでは、カスタムクラスの名前を変更して保存してからMonoDevelopに戻しました。私の恐怖には、名前が変更されたものと同じ名前の新しい.designer.csファイルが作成されました。古い(改名されていない)a.designer.csファイルの横にある元の(名前が変更された).csファイルの下に置かれます。

誰かが私が取ったはずの手順を教えてもらえますか?

+0

Finderで* .designer.csファイルの名前を手動で変更してから、* .csprojファイルを開いて手動でテキストエディタで編集する必要がありました。私は正確なステップはありませんが、Xamarinの人の一人が私たちを啓発できることを願っています。 – jonathanpeppers

答えて

4

MDはグループ化されたファイルの名前変更をサポートしていないため、ファイルの名前を変更するのは難しいです。手動でcsprojを編集するか、プロジェクトからファイルを削除し、Finderで名前を変更してから追加し直す必要があります。

クラスの名前を変更する方がやや簡単ですが、キーには実際には.NET名とObj-Cという2つの名前があることを理解することが重要です。 .NETの名前を変更するのは簡単です。単にMDのrenameコマンドを使うだけです。

Obj-C名は、[Register( "SomeName")]属性のクラスに適用され、xibおよびXcodeで使用される名前です。ただし、MonoDevelopは、Xcodeで作成されたと考えられるクラスの.NETクラスを作成しようとします。つまり、まずMonoDevelopでObj-Cの名前を変更してから、Xcodeに切り替えてカスタムクラスを変更する必要があります。

2

.csprojファイルに移動してタグを追加する必要があります。たとえば、

<Compile Include="MainWindow.cs" /> 
    <Compile Include="MainWindow.designer.cs"> 
     <DependentUpon>MainWindow.cs</DependentUpon> 
    </Compile> 

これは、MonoDevelopプロジェクトウィンドウ内のファイル間の正しい関係を示します。

これまでの私の経験では、この依存性は純粋に便宜上のものです。新しいdesigner.csファイルをソリューションに追加すると、コードはちゃんとコンパイルされます。依存関係は一種のドキュメントのようです。

ALSO:これらの依存ファイルを削除したり名前を変更したりするには、MonoDevelopプロジェクトペインでは実行できません。Finder(Windowsの場合はOSX、エクスプローラの場合)に移動し、それらのファイルを扱い、名前を変更したり、そうでなければ操作したりして、MonoDevelop csprojファイルを手動で修復します。良いことは、それほど難しいことではありません。これを行うとうまくいきます。プロジェクトがどのように組み合わされているかについて、新しいハードコアの理解が得られます。

0

多くの人がバージョン管理システムについて考える必要があります。この方法では、私の作品:

  1. は、ファイル
  2. テキストエディタで開きcsprojファイルの名前を変更し、バージョン管理システムではMonoDevelopの
  3. を終了します - 検索&は
  4. オープンMonoDevelopの
  5. オープンを置き換えますXxxViewController.cs - search &を置き換えます。
  6. XxxViewController.designer.cs - search &を置き換えます。
  7. を置き換えます。
  8. オープンXxxViewController.xib - 検索&置き換える

あなたは、ステップ5で置き換える/リファクタリングを使用する代わりに、検索&の名前を変更したくなるかもしれませんが、それはMonoDevelopのがXxxViewController_1.csにXxxViewController.designer.csの名前を変更します何らかの理由で。

また、バージョン管理システムでファイルの名前を変更してからプロジェクトに再度追加することもできます(手動でcsprojファイルを編集する必要はありません)。これは動作しますが、 "DependentUpon"の部分がcsprojファイルから消えてしまい、デザイナーファイルがそのファイルの下にはないようになります。大したことはありませんが、ソリューションエクスプローラではあまりうまく見えません。

0

上記のすべてのソリューションを試してもうまくいかなかった。最後に、「Replace in Files」を使用して、ソリューション全体を見てみました。その後、私はプロジェクトで "Rebuild"を行い、正常に動作しました。

関連する問題