将 UITableViewControllers 表视图添加到新的 UIView

Posted

技术标签:

【中文标题】将 UITableViewControllers 表视图添加到新的 UIView【英文标题】:Adding UITableViewControllers tableview to new UIView 【发布时间】:2010-01-24 19:27:53 【问题描述】:

我有一个简单的问题。

我有一个显示 UITableView 的普通 UITableViewController。当用户点击我的应用程序右上角的按钮时,我希望 TableView 从右向左翻转,然后显示一个新的 UIView。我发现动画 UIViewAnimationTransitionFlipFromRight 翻转当前视图并将其替换为新视图。但是,动画涉及从其父视图中删除当前视图,然后将新视图添加到同一个父视图中。 问题是当我试图在我的 UITableViewController 类中执行此操作时,我只有一个视图 - UITableView - 我需要删除它。当 UITableView 被移除后,我没有任何视图可以添加新视图,并且屏幕变为空白。

我解决这个问题的想法是创建一个 UIView 并将 UITableView 放在该视图中。我会在动画中从 UIView 中删除 UITableView,然后将我的新视图添加到同一个 UIView。 初始化时是这样的:

superViewTest = [[UIView alloc] initWithFrame:self.tableView.frame];
[superViewTest addSubview:self.tableView];

然后在翻转动画时像这样:

[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:YES];
[self.tableView removeFromSuperview];
[superViewTest addSubview:self.mapView];

或者 UITableViewController 中的 UITableView 是否已经有一个我不知道的超级视图?

希望我能更好地解释这一点,在此先感谢!

【问题讨论】:

【参考方案1】:

我建议您使用标准的 UIViewController 而不是 UITableViewController。然后,您可以直接控制表及其父视图。将表格添加为 UIViewController 视图的子视图,并按照您描述的方式将其与您的反面视图交换。

【讨论】:

是的,表格视图不需要 UITableViewController。如果您使用的是在 nib 中定义的表格视图,它会做一些没那么有用的事情。只需确保将 UIViewController 声明为实现表视图协议即可。 好吧,好吧。但是如果我使用 UIViewController 并实现 协议,我的 tableView:cellForRowAtIndexPath: 方法是否仍会被调用?我没有使用笔尖来创建 UITableView...再次感谢! 只要确保将表的委托和数据源设置为指向您的 viewController,它们都会被正常调用。 非常感谢!像魅力一样工作 =)【参考方案2】:

您可能只能使用 presentModalView 或其他任何东西。使用“Utility”项目模板创建一个新应用程序,看看它是如何做到的。如果您实际上不想切换到模态视图,模态视图的内容将无法正常工作。

【讨论】:

以上是关于将 UITableViewControllers 表视图添加到新的 UIView的主要内容,如果未能解决你的问题,请参考以下文章

UITableViewControllers 上的 prepareforSegue 方法

UIViewController 子类也会影响我的 UITableViewControllers 吗?

手势不适用于包含 UITableViewControllers 的 UIPageViewController

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

使用 3 个 UITableviewcontrollers 作为值列表

带有文本快捷方式的自定义 UIToolbar 的行为与带有 UIButtons 和 UITableViewControllers 的键盘完全不同