【发布时间】:2011-09-15 18:53:35
【问题描述】:
我在这里有点进退两难。我有一个将 UINavigationViewController 作为 rootViewController 的应用程序。据我所知, UINavigationViewController 在实例化时需要一个 rootViewController。问题是,我有几个 UIViewController 可供选择,而选择取决于从 Web 服务返回的数据。
这是否意味着我应该在 AppDelegate 中调用 Web 服务,并且只有在获得数据后才实例化 UINavigationViewController?
我还考虑过创建一个包装器 UIViewController,其中包含 UINavigationViewController 及其作为子视图的视图。但看起来嵌套视图控制器有一些缺点,主要是在生命周期和旋转方面。
有没有更好的方法来做到这一点?谢谢!
更新:我的同事推荐了另一种可能是最干净的解决方案。在这里,AppDelegate 加载了一个“引导程序”ViewController,其主要目的是从 web 服务中提取数据并可能显示一个加载指示器。获取数据后,它将自行移除并添加具有适当根目录的 Navigation 控制器。
【问题讨论】:
-
也许推送一个带有“等待数据...”视图的视图控制器,然后当网络响应到达时弹出它并推送适当的视图控制器?
-
@meggar,这正是我同事推荐的!把它放在一个答案中,我会接受你的答案。 :)
-
bootstraper 的思路还不错,确定好加载方式后,可以更改窗口的rootViewController。
标签: iphone objective-c ios ipad