在MonoTouch MonoDevelop中重命名控制器类

时间:2012-03-14 11:17:04

标签: xamarin.ios monodevelop

重命名继承UIViewController并且有一个链接到故事板的designer.cs类的类的最佳方法是什么?

我首先尝试在MonoDevelop中重命名.cs文件。这有效,但designer.cs文件没有用它重命名,类名也没有。

然后我重命名了班级名称。这成功地更改了.cs和.designer.cs文件中的类名,但仍然没有更改.designer.cs文件名。它也没有改变Xcode中控制器的“自定义类”的名称。

所以在XCode中,我更改了自定义类的名称并保存然后切换回MonoDevelop,令我惊恐的是它创建了一个与重命名的同名的新.cs和一个新的.designer.cs文件放在旧的(未重命名的)a.designer.cs文件旁边的原始(重命名).cs文件下!

谁能告诉我应该采取的步骤顺序?

4 个答案:

答案 0 :(得分:4)

重命名文件很棘手,因为MD不支持重命名分组文件。您必须手动编辑csproj,或从项目中删除文件,在Finder中重命名,然后重新添加。

重命名类有点容易,但关键是要理解该类实际上有两个名称 - .NET名称和Obj-C名称。重命名.NET名称应该很简单,只需在MD中使用rename命令即可。

Obj-C名称应用于[Register(“SomeName”)]属性上的类,并且是在xib和Xcode中使用的名称。但是,请注意MonoDevelop将尝试创建它认为是在Xcode中创建的任何类的.NET副本。这意味着您应首先在MonoDevelop中更改Obj-C名称,然后切换到Xcode并在那里更改自定义类。

答案 1 :(得分:2)

您必须进入.csproj文件并添加标记。例如:

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

然后,这将显示MonoDevelop项目窗口中文件之间的正确关系。

顺便说一句,到目前为止,我的经验是这种依赖纯粹是为了方便。将新的designer.cs文件添加到解决方案中,代码编译得很好:依赖似乎是一种文档。

另请注意:要删除或重命名这些相关文件,您无法在MonoDevelop项目窗格中执行此操作:您必须转到Finder(如果您在OSX中,如果您在Windows中则使用资源管理器)并处理使用那里的文件,重命名或以其他方式操纵它们,然后手动修复MonoDevelop csproj文件。好消息是,它并不难,而且当你这样做时它运作良好,你会对这个项目如何编织在一起有一个很酷的新核心理解。

答案 2 :(得分:0)

许多人还必须考虑版本控制系统。这种方式对我有用:

  1. 退出MonoDevelop
  2. 在版本控制系统中,重命名文件
  3. 在文本编辑器中打开csproj文件 - 搜索并替换
  4. 打开MonoDevelop
  5. 打开XxxViewController.cs - 搜索和替换
  6. 打开XxxViewController.designer.cs - 搜索和替换
  7. 打开XxxViewController.xib - 搜索和替换
  8. 您可能想要使用Refactor / Rename而不是search&amp;在步骤5中替换,但这将导致MonoDevelop出于某种原因将XxxViewController.designer.cs重命名为XxxViewController_1.cs。

    此外,您可能想要在版本控制系统中重命名文件之前从项目中删除文件,然后再将它们添加回项目中(这样您就不必手动编辑csproj文件)。这将起作用,但“DependentUpon”部分将从csproj文件中消失,这会导致设计器文件不低于其对应文件。没什么大不了的,但在解决方案资源管理器中看起来不太好。

答案 3 :(得分:0)

我尝试了上述所有解决方案并且没有工作。最后我只使用了&#34;替换文件&#34;寻找整个解决方案。之后我做了一次&#34; Rebuild&#34;在项目中,工作得很好。