2 个 UITableViewControllers 与 1 个 UIViewController 交换两个 UITableViews

Posted

技术标签:

【中文标题】2 个 UITableViewControllers 与 1 个 UIViewController 交换两个 UITableViews【英文标题】:2 UITableViewControllers vs 1 UIViewController that swaps two UITableViews 【发布时间】:2011-09-27 17:06:19 【问题描述】:

我有一个与两个 UITableViewController 一起工作的导航控制器。第一个 UITableViewController 向用户显示他们的图片库列表,当他们点击一个单元格时,第二个 UITableViewController 被压入堆栈并显示库中的图片(很像 UIImagePicker)。我想要做的是,当用户在初始 UITableViewController 上选择照片库时,我希望导航标题不动画,而 UITableViews 的过渡确实动画。有没有办法做到这一点,或者我是否需要实现一个 UIViewController 来交换两个 UITableViews(那时我不确定在第二个 UITableView 被交换后我是否能够编辑后退按钮?)。

【问题讨论】:

【参考方案1】:

我很确定最简单的方法是将两个 UITableView 添加到 UINavigationController 的视图中,然后在 didselectrowatindexpath 中使用 [UIView beginAnimation] 为它们设置动画。您还应该有一个标志来保存视图状态 - 向用户显示库选择器视图或图像选择器。然后您就可以在后退按钮选择器中正确处理此问题。

这是 IMO 最简单的方法。

【讨论】:

所以为了做到这一点,我必须继承 UITableView,并使其成为自己的委托?然后我将如何将数据加载到 tableview 中,我想在 tableview 子类中执行它会很糟糕,所以必须在视图控制器本身中执行它?这看起来很奇怪,并且似乎违反了 MVC,令人惊讶的是,在不更改导航控制器的情况下交换表格视图非常困难。【参考方案2】:

我推荐一个 UIViewController 并为表格视图的框架设置动画以在它们之间转换。

【讨论】:

所以为了做到这一点,我必须继承 UITableView,并使其成为自己的委托?然后我将如何将数据加载到 tableview 中,我想在 tableview 子类中执行它会很糟糕,所以必须在视图控制器本身中执行它?这看起来很奇怪,而且似乎违反了 MVC,令人惊讶的是,在不更改导航控制器的情况下,很难将表视图交换进出。

以上是关于2 个 UITableViewControllers 与 1 个 UIViewController 交换两个 UITableViews的主要内容,如果未能解决你的问题,请参考以下文章

UIViewController 无法查看 UITableViewController

触摸外部时在 UITableViewController 中隐藏 UIPickerView

在 UIScrollView 内的 UITableViewController 的 UITableViewCell 右侧看不到控件

UITabBar 在同时单击 2 个按钮时禁用

2 个 UITableViewControllers 与 1 个 UIViewController 交换两个 UITableViews

滚动 UITableviewcontroller 时包含 UITextfield 的 UITableviewcell 隐藏