2013-01-03 5 views
11

リストビュー(UITableView)とグリッドビュー(UICollectionView)を切り替えることができるボタンがあるプロジェクトがありますが、その方法はわかりません。UITableViewとUICollectionViewを切り替える方法

+6

英語はそれほど貧弱ではありませんが、現時点では問題になりません。あなたはどんなに正確に何をしていますか?これまでに何をしようとしましたか? –

+0

申し訳ありませんが、私は初心者です! –

答えて

19

コントローラーがtableViewという名前のプロパティーと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]; 
} 
のは、それがテーブルビューだとしましょう
+0

ありがとう!しかし、どのViewControllerを使うことができますか? TableViewControllerまたはCollectionViewControllerです。 TableViewDelegateとDatasourceをOutsiteクラス(ViewControllerではなく)で使用するにはどうすればいいですか? –

+0

通常のUIViewControllerを使用し、両方のタイプのビューをプロパティとして追加します。また、2つのビューのロジックを別々に保つ場合は、UITableViewControllerとUICollectionViewControllerを作成し、メインコントローラのプロパティの代わりにそのビューを使用することもできます。 – Simon

+0

あなたのビューがビュー階層の一部である場合(例えばxib/storyboardを追加するなど)、 '+ transitionFromView:ToView:duration:options:completion:'メソッドのオプションパラメータの1つとして 'UIViewAnimationOptionShowHideTransitionViews'を渡す必要があります。 – MrBr

2

これに対処するもう1つの方法は、を1つ持ち、希望するモードに応じてUICollectionViewFlowLayoutの実装を切り替えることができます。

UITableViewUICollectionViewに変換するには、オンラインで多くのチュートリアルがあります(例:this)。

関連する問題