iOS中的Windows,是从Android构建多活动应用程序的最佳方式吗?

时间:2011-06-21 23:03:26

标签: iphone android objective-c ios cocoa-touch

我目前正在为Android和iOS开发应用程序,事情是......我开始使用Android,我的应用程序有几个不同布局的活动(屏幕有不同的GUI,如果你不熟悉android),大多数它们显示的内容非常不同;地图,包含数据库数据的列表,图像,带按钮的文本字段等(大多数情况下,屏幕的方向也会发生变化)。

问题来自iOS:

  • 如何从IBActions创建更多窗口? (这是正确的方法吗?)。

  • 创建窗口后,如何创建新界面? (我需要另一个.xib文件吗?)

  • 如果用户使用一个Windows完成后,上一个窗口是否仍保留在内存中并可以重新打开? (我可以使用导航选项卡,即使第一个窗口不是使用它吗?)这是一个主要问题,因为iPhone没有后退按钮,Android依赖于那些......

  • 此外,如果我无法在多个窗口中拆分我的程序,我的应用程序是否会在销毁和构建视图时使用大量内存?

我是Cocoa开发的新手,我已经读过一本关于Objective C编程的书(只教授语法等),另一本关于简单iPhone应用程序的书(所有这些都在一个窗口中完成,改变了视图以编程方式)我正在阅读另一个,但我无法找到解决问题的简单答案......

我的意思是我得到Obj-C以及如何构建iPhone应用程序(非常好),但问题可能是我来自Android的更直接的开发。每当我看到一个iOS项目时,我都觉得它总是一团糟,而developer.apple.com中的文档也没什么用,我无法找到我想要的东西。

希望有人已经完成了这一点,并愿意指出我正确的方向,谢谢!

3 个答案:

答案 0 :(得分:1)

我建议您从Apple开发人员网站上的View Controller Programming Guide开始。我想你会发现它非常有帮助。

要回答您的问题,您可以独立开发每个视图。根据您的目的,从nib文件开发每个文件都可以。在我正在开发的应用程序中,我有一些我以编程方式开发的,有些是我从NIB文件中引入的。全取决于你。我上面提到的指南讨论了这两种方法。

关于按下按钮加载视图,您可以这样做。根据您使用的视图控制器,可以非常轻松地完成。例如,在导航控制器中,您只需创建视图实例并将其推入堆栈即可。当您完成视图后,将其弹出并返回上一个视图。

关于记忆,这始终是一个问题。您可能需要查看The Memory Management Programming Guide

祝你好运。我自己刚刚开始使用Android开发。

答案 1 :(得分:1)

Chris已经提供了一个很好的答案,但我想在地址特定问题上添加几点。

iOS应用通常只有一个UIWindow。在该窗口中,您可以呈现多个视图。

应用程序通常被组织成几个值得内容的逻辑屏幕,每个屏幕由一些UIViewController子类管理。

每个UIViewController实例都有一个根视图,其中可能包含许多子视图。 UIViewController的视图应该填充其窗口或Apple的容器视图控制器类(UINavigationController,UITabBarController,UISplitViewController等)提供的一些框架。您不应该将一个UIViewController的视图添加为另一个UIViewController视图的子视图。

如果视图不可见,当应用程序收到内存警告时,UIViewControllers将尝试卸载其视图。查看课程的生命周期方法,如-viewDidUnload。您应该支持并利用此行为来减少内存占用。在没有加载视图的情况下将UIViewControllers保留在内存中应该具有最小的开销,允许您保持一些持久状态,并且可以在需要时重新加载每个控制器的视图。

通常,为了在视图之间转换,控件将向当前视图控制器发送消息(通常通过IBAction绑定)。然后,当前控制器将触发转换到另一个视图控制器。它可以通过创建一个新的视图控制器并将其推送到当前导航控制器或将新控制器呈现为模态来实现。它可能会引用一些现有的控制器并提供它。它可能会从导航堆栈中忽略它以显示以前的控制器。它甚至可能将消息传递给控制器​​的层次结构,直到某些父级切换可见选项卡,解除或呈现模式,等等。

您也可以通过添加,删除,隐藏或移动UIViewController的根视图的子视图来响应IBAction来触发较小的转换。

答案 2 :(得分:-1)

Flash Builder 4.5.1现在,您可以构建一个应用程序并编译到多个设备

更新:尝试XAMARIN,它是Visual Studio的一部分: https://www.xamarin.com/