在Where has "window-based" project gone?的后续步骤中,使用Xcode 4.2在MonoTouch中将空应用程序修改为基于窗口的应用程序需要执行哪些步骤?
我正在学习iOS开发并阅读了大约1 1/2本书(最近,"iOS Programming: The Big Nerd Ranch Guide (2nd Edition)" - 好书)。我找到了关于将空应用程序转换为Objective-C的基于窗口的应用程序的说明here。
我尝试将这些步骤应用于示例MonoTouch应用程序,并且我得到与需要根视图控制器相关的运行时错误。
是否有网站以简单的头脑为小词列出步骤?
答案 0 :(得分:1)
通过从我的一本Monotouch书籍(http://www.apress.com/9781430231745)的源代码下载基于窗口的应用程序示例,然后创建一个空解决方案,我发现了以下步骤。我对这些文件进行了比较,并将所需的内容添加到空文件中,使其看起来(和行为)就像基于窗口的文件一样。
将Main中的行UIApplication.Main (args, null, "AppDelegate");
更改为UIApplication.Main (args);
。
将AppDelegate派生的类添加到文件Main.cs
(名称空间内):
// The name AppDelegate is referenced in the MainWindow.xib file. public partial class AppDelegate : UIApplicationDelegate { // This method is invoked when the application has loaded its UI and its ready to run public override bool FinishedLaunching (UIApplication app, NSDictionary options) { // If you have defined a view, add it here: // window.AddSubview (navigationController.View); window.MakeKeyAndVisible (); return true; } }
删除文件AppDelegate.cs
(从项目中删除)。
添加新的Empty iPhone Interface Definition
文件,并将其命名为MainWindow.xib
。
添加一个新的空C#文件并将其命名为MainWindow.xib.designer.cs
。插入以下代码:
using MonoTouch.Foundation; namespace MY_NAMESPACE { [Register ("AppDelegate")] partial class AppDelegate { [Outlet] MonoTouch.UIKit.UIWindow window { get; set; } void ReleaseDesignerOutlets () { if (window != null) { window.Dispose (); window = null; } } } }
将MY_NAMESPACE
更改为您的命名空间。
在Interface Builder(Xcode 4.2)中打开MainWindow.xib
。
将文件所有者的类更改为UIApplication
(第三个选项卡 - Identity Inspector)。
添加新的Object
对象(在小部件列表中搜索object
)并将班级更改为AppDelegate
。
添加新的Window
对象。
选择文件所有者,单击检查器中的最后一个选项卡(Connections Inspector)并将代理链接连接到App Delegate
。
选择App Delegate并将窗口链接连接到新窗口。
在Interface Builder中保存MainWindow.xib文件更改。
返回MonoDevelop。
打开文件Info.plist
并将主界面更改为MainWindow
。
我收到关于Applications are expected to have a root view controller at the end of application launch
的警告,但应用程序似乎正在运行。我怀疑警告来自.xib
文件中的一些差异。也许Xcode 3.2版本包含一些迹象表明这是根视图控制器。我如何摆脱这个警告?
答案 1 :(得分:0)
已阅读约1 1/2本书
大多数MonoTouch书籍都是在XCode 4之前编写的,事后发生了一些变化。注意:仅AFAIK iOS Development using MonoTouch Cookbook(来自Dimitris)更新(但我尚未尚未读取此内容; - )。
是否有网站以简单的头脑为小词列出步骤?
Xamarin的网站上有很多tutorials and samples来帮助你覆盖那些新的(和改变的)事物。 samples的源代码也可在github上获取,以便进行测试或只是浏览它们。
很多其他网站和很棒的博客也在谈论MonoTouch,新的和不常见的API ......谷歌搜索总会带来更多惊喜:)
我遇到了与需要根视图控制器相关的运行时错误。
错误?或者是一个警告? iOS5警告缺少根视图控制器。以下是MonoTouch.Dialog的Sample应用程序中使用的代码。
// On iOS5 we use the new window.RootViewController, on older versions, we add the subview
if (UIDevice.CurrentDevice.CheckSystemVersion (5, 0))
window.RootViewController = navigation;
else
window.AddSubview (navigation.View);