У меня есть проект с кнопкой, которая позволяет пользователю переключаться между списком (UITableView
) и сеткой (UICollectionView
), но я не знаю, как это сделать.
Как переключить UITableView и UICollectionView
Ответ 1
Предположим, что ваш контроллер имеет свойство UITableView
с именем tableView
и свойство UICollectionView
с именем collectionView
. В вашем 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];
}
Ответ 2
Другой способ справиться с этим - иметь один UICollectionView
, в котором вы можете переключить реализацию UICollectionViewFlowLayout
в зависимости от режима, который вы хотите.
Чтобы преобразовать из UITableView
в UICollectionView
, в Интернете есть много обучающих программ, например this.