我正在与一些想使用TTNavigator而不是Storyboard或老式UINavigationController推送的人一起进行项目。我很好,除了我们应用中的某些视图控制器正在使用委托模式彼此通信。我不确定在使用TTNavigator时如何保留该模式。可能吗?
问我问题的另一种方式是:是否可以从告诉TTNavigator打开新的actionURL到目标视图控制器的视图控制器中访问目标视图控制器?
例如,我有一个视图控制器,需要用户提供图像。要获得它,它会启动一个带有相机UI的新视图控制器,该UI允许用户获取图像。通常,我会将第一个视图控制器设置为相机视图控制器的委托。当用户选择了图像时,摄影机视图控制器会告诉委托人有关选择的内容,而委托人会抓取图像并将摄影机视图控制器从堆栈中弹出。
TTNavigator似乎并没有给我的第一个视图控制器提供与相机视图控制器进行交互的机会。我看到的一种方法是让第一个视图控制器将自己设置为TTNavigator的委托,这将导致TTNavigator让我窥视将要推送的视图控制器。那是解决这个问题的最好方法吗?
最佳答案
可能但不建议
您可以在“查询”中传递数据。您当然可以传递原始viewController,然后将其连接到目标viewController的构造函数中。其松散耦合,将正常工作。虽然不漂亮。
http://three20.info/article/2010-10-06-URL-Based-Navigation#nativeparams
或者,您可以使用viewControllerForURL:从TTNavigator直接检索viewController,然后推送该viewController。还不漂亮
我在许多项目上使用了TTNavigator,但是最后一个实现所带来的麻烦远远超过了它的价值。我们试图使其在iPad项目上正常运行,并与图书馆进行了持续的斗争。最重要的是,iOS应用程序不是Web应用程序,在自定义应用程序中没有将URL映射到多屏幕导航的通用策略。对于每个页面都是无状态且生活在结构化语义体系中(希望如此)的Web来说,这是非常有意义的,但是有了丰富的移动应用程序(尤其是多窗格iPad应用程序),这些细节就很难在URL中编码。最好先构建一个不太复杂的导航管理子系统,然后根据需要映射显式URL。