11

我有一个带有按钮的项目,允许用户在列表视图 ( UITableView) 和网格视图 ( UICollectionView) 之间切换,但我不知道该怎么做。

4

2 回答 2

19

假设您的控制器有一个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];
}
于 2013-01-03T13:10:04.823 回答
2

处理它的另一种方法是使用一个单一的方法,您可以在其中根据您想要的模式UICollectionView切换实现。UICollectionViewFlowLayout

为了从 转换UITableViewUICollectionView,网上有很多教程,例如this

于 2017-02-14T12:37:27.173 回答