我开始使用iphone开发,并试图从一个视图移动到另一个视图。
我有一个主视图(NearestPhotosViewController),它基本上充当我的应用程序的菜单。然后我有第二个视图(DisplayNearestPhotos)。
我来自网页(html)背景,所以我想用网络术语做的就是点击NearestPhotosViewController视图上的按钮(链接),然后显示DisplayNearestPhotos视图。
我一直在寻找一些代码来执行此操作(我认为这不像在html中执行equivelent那么简单。)
以下代码连接到菜单视图上的按钮。
-(IBAction)ButtonPressed:(id)sender
{
DisplayNearestPhotos *views = [[DisplayNearestPhotos alloc]
initWithNibName:nil bundle:nil];
[self presentModalViewController:views animated:YES];
views.release;
}
以上代码有效(它显示第二个视图),但我想知道的是,这是正确的方法吗?如果没有,从一个视图移动到另一个视图的正确方法是什么?
提前谢谢
答案 0 :(得分:4)
取决于你想要做什么。模态视图适用于应用程序流的临时中断。如果您尝试提供具有确定性顺序的一致视图流,我会在自然流中使用UINavigationController
和push
以及pop
视图。如果您有一组可以随时选择的独特视图,UITabBarController
将是合适的。实际上,这一切都取决于您的应用程序的设计以及您希望用户如何与您的应用程序进行交互。
我要做的就是坐下来和Apple read this article一起找出你拥有的东西。然后,我会坐下来 设计 如何最好地组织您的应用。
前进并征服。
其他信息:
Modal View Controllers
Navigation Controllers
Tab Bar Controllers
答案 1 :(得分:1)
我开始使用iPhone开发的方式是three20 project。如果您查看示例应用TTCatalog
,您会看到他们提出的一个有趣的模式,应该吸引具有Web开发背景的人。
他们设置了“urls”到类(在本例中为视图控制器)的映射,如下所示:
TTURLMap* map = navigator.URLMap;
[map from:@"*" toViewController:[TTWebController class]];
[map from:@"tt://catalog" toViewController:[CatalogController class]];
[map from:@"tt://photoTest1?" toViewController:[PhotoTest1Controller class]];
[map from:@"tt://photoTest2" toViewController:[PhotoTest2Controller class]];
[map from:@"tt://imageTest1" toViewController:[ImageTest1Controller class]];
使用three20项目中的方法,您可以设置“{url”,例如UITableViewCell
到tt://photoTest1
,然后您会看到PhotoTest1Controller
的视图主堆栈。它非常方便,也是一种很好的开始方式(另外,我发现查看代码并从中获取一些很棒的模式很有用。)
希望这有帮助!
答案 2 :(得分:1)
这取决于您的设计。如果您的应用程序具有适当的屏幕流程,UINavigationController是不错的选择。使用此功能,您可以在按钮单击时导航到其他屏幕。 UINavigationController本身维护屏幕堆栈并提供后退按钮以导航到上一屏幕。因此,很容易保持屏幕流。 如果您的设计具有与正常屏幕流程不同的屏幕,则可以使用模态视图控制器来显示屏幕。这不会干扰我的屏幕流量。例如如果您的应用程序具有根屏幕并且您想要显示信息屏幕,则可以使用模态视图控制器显示信息屏幕。 您使用的方法将影响屏幕动画。模态视图控制器将从底部显示屏幕,而导航将从右向左显示屏幕。 如果要在标签栏上单击显示不同的屏幕,请使用UITabBarController。 您还可以使用应用程序中提到的所有类型的组合。