如何切换 UITableView 和 UICollectionView
Posted
技术标签:
【中文标题】如何切换 UITableView 和 UICollectionView【英文标题】:How to switch UITableView and UICollectionView 【发布时间】:2013-01-03 12:54:27 【问题描述】:我有一个带有按钮的项目,允许用户在列表视图 (UITableView
) 和网格视图 (UICollectionView
) 之间切换,但我不知道该怎么做。
【问题讨论】:
这不是很糟糕的英语,但它目前是一个糟糕的问题。 究竟你坚持什么?到目前为止,您尝试过什么? 对不起@但我是新手! 【参考方案1】:假设您的控制器有一个名为tableView
的UITableView
属性和一个名为collectionView
的UICollectionView
属性。在您的viewDidLoad
中,您需要添加起始视图。假设它是表格视图:
- (void)viewDidLoad
self.tableView.frame = self.view.bounds;
[self.view addSubview:self.tableView];
然后在您的按钮回调中,交换视图:
- (void)buttonTapped:(id)sender
UIView *fromView, *toView;
if (self.tableView.superview == self.view)
fromView = self.tableView;
toView = self.collectionView;
else
fromView = self.collectionView;
toView = self.tableView;
[fromView removeFromSuperview];
toView.frame = self.view.bounds;
[self.view addSubview:toView];
如果你想要一个花哨的动画,你可以改用+[UIView transitionFromView:toView:duration:options:completion:]
:
- (void)buttonTapped:(id)sender
UIView *fromView, *toView;
if (self.tableView.superview == self.view)
fromView = self.tableView;
toView = self.collectionView;
else
fromView = self.collectionView;
toView = self.tableView;
toView.frame = self.view.bounds;
[UIView transitionFromView:fromView
toView:toView
duration:0.25
options:UIViewAnimationTransitionFlipFromRight
completion:nil];
【讨论】:
谢谢!但是我可以使用哪个 ViewController? TableViewController 或 CollectionViewController。如何在外部类(不是 ViewController)中使用 TableViewDelegate 和 Datasource? 只需使用普通的 UIViewController,并将两种类型的视图作为属性添加到它。或者,如果您想将两个视图的逻辑分开,您可以创建一个 UITableViewController 和一个 UICollectionViewController 并使用它们的视图而不是主控制器的属性。 如果您的视图已经是视图层次结构的一部分(例如,通过添加 xib/storyboard),您必须将UIViewAnimationOptionShowHideTransitionViews
作为+transitionFromView:ToView:duration:options:completion:
方法中的选项参数之一传递。跨度>
你应该使用UIViewAnimationOptionTransitionFlipFromRight
而不是UIViewAnimationTransitionFlipFromRight
。
非常感谢!但是我如何让子视图的单元格在选择时调用父级的方法?我想将控制器推到父导航控制器上【参考方案2】:
另一种处理方法是使用单个UICollectionView
,您可以在其中根据您想要的模式切换UICollectionViewFlowLayout
实现。
为了将UITableView
转换成UICollectionView
,网上有很多教程,比如this。
【讨论】:
以上是关于如何切换 UITableView 和 UICollectionView的主要内容,如果未能解决你的问题,请参考以下文章
UITableView 带有滑动切换到来自其他数组和指示器的数据
如何切换到将 Core Data 用于简单的 UITableView 而不是 NSArray?