【发布时间】:2010-06-15 20:48:32
【问题描述】:
给定一个将 UITableViewController 推到 UINavigationController 上的 iPhone 应用程序,我想添加一个右栏按钮项以在表格视图和“替代”之间切换查看相同的数据。我们还假设这个其他视图使用相同的数据,但 不是 UITableView。
现在,我知道 Stack Overflow 上已经存在这个问题的变体。但是,在这种情况下,该替代视图不会被推送到 UINavigationController。这在视觉上类似于将当前 UIViewController 的表视图翻转过来并显示另一个视图,然后能够翻转回来。换句话说,它打算在 UINavigationController 层次结构中占据一个位置。
此外,您最终在任一视图中做出的任何选择都会将一个通用 UIViewController 推送到 UINavigationController 堆栈中。
更多信息:我们不想使用单独的 UINavigationController 来处理这对视图,也不想通过 UITabBarController 将它们分开强>要么。在视觉和上下文上,用户体验旨在展示同一枚硬币的两个面。只是这两个方面在正常实践中碰巧涉及到自己的 View Controller。
现在……事实证明我已经走了,并迅速进行了设置,看看它是如何工作的!然而,在回过头来检查它时,我有一个明显的印象,我是以一种相当非 MVC 的方式来处理它的,这当然让我有点担心。
这是我在高层次上所做的。
现在,我有一个 UIViewController(不是 UITableViewController)来处理两个视图之间的所有共性,例如获取原始视图数据。我还有两个 NIB,一个用于每个视图,还有两个 UIView 对象与它们一起使用。 (其中一个是UITableView,它是一种UIView。)
我使用动画在视图之间切换(很简单)。此外,为了保持封装,现在拆分的 UITableView(不是 UIViewController!)充当自己的委托和数据源,从风险投资。 VC 在表视图中被设置为一个弱的、非保留的对象。同时,备用视图以完全相同的方式从 VC 获取原始数据。
所以,这里有一些东西闻起来很有趣。从孩子到父母的弱联系,虽然礼貌,但似乎可能是错误的。制作 UITableView 表的数据源和委托对我来说似乎也很奇怪,认为视图控制器是您希望根据 Apple 的 MVC 图表放置它的位置。就目前而言,看起来好像视图知道模型,这是不好的。提前加载两个视图似乎也很奇怪,因为延迟加载不再有效。失去 UITableViewController 的好处(比如自动滚动到带有文本字段的单元格)也有点令人沮丧,我也不想重新发明轮子来解决这个问题。
鉴于以上所有情况,并且我们希望在单个 UINavigationController 上的单个点的上下文中实现“翻转效果”,并且鉴于两个视图是同一枚硬币的两个面,有没有更好、更明显的方法来设计这个我碰巧完全错过的?线索赞赏!
【问题讨论】:
标签: iphone model-view-controller uitableview uiviewcontroller uinavigationcontroller