本文是对:http://three20.info/article/2010-10-06-URL-Based-Navigation 一个简单粗糙的翻译,第一次写博客,本着学习,交流,一起进步,共同发展的良好祝愿,虽然翻译生硬,希望大家包涵,指出其中的问题!
在iPhone应用程序中,导航栏有一定的挑战性-因为没有在一个既定的方法来打开一个视图并向其传递数据。大多数应用中,调用者必须知道每个视图特定的API,这种方式导致了在你的应用程序中,很多位置调用大量的引用代码来打开相同的视图。
TTNavigator的基于URL的导航方式提供了一种标准的方式来导航用户的视图,它本身内建了一些标准的iPhone接口,比如UINavigationController,UITabBarController等。
简介
从一个简单的例子开始,通常这些要写到您的应用程序的委托的方法 applicationDidFinishLaunching:selector 中
上面的map引用到了一个类:
RestaurantController 和它的一个选择器(方法):initWithName:
这就从一个url建立了一个简单的映射,如果你要打开一个商店的视图,比如 Chotchkie's.
如果使用UINavigationController,你一般会这么做:
每次产生视图的时候,需要生成一个 controller对象,然后添加到UINavigationController中,然后释放。
使用TTNavigator,只要打开URL如下:
当 openURLAction: 被调用时,一个RestaurantController对象被生成,并掉用方法initWithName,并将 @“Chotchkie's” 作为第一个参数传递给
initWithName方法。
持久性
使用TTNavigator一个巨大的优势,就是用户所有的导航情况自动的根据URLS来记录。这意味着,如果你一个导航控制器标签栏,TTNavigator采用“栈”方式记录用户使用openURLAction浏览过的所有url。当应用程序被再次启动时,用户可以查看上次的浏览记录。
TTNavigator默认的历史记录方式是:TTNavigatorPersistenceModeNone,即不记录。需要调用 restoreViewControllers 来选择另外2中模式来实现记录。 在
applicationDidFinishLaunching: 方法中,可以设置记录方式:
TTNavigatorPersistenceModeNone
- No persistence. (不记录)TTNavigatorPersistenceModeTop
- Persist only the first URL in the history.(应该是每次浏览的最后一个)TTNavigatorPersistenceModeAll
- Persist the entire history.(所有历史)