2012-12-19 10 views
7

OS Xのビュー間でスワイプを実装する最適な方法は何ですか?これらのビューは、それらのビューコントローラでペン先から初期化され、同じクラスタイプです。背景を表示するには、各ビューに現在の日付に関する関連データが表示されます。OS Xのビュー間でスワイプを実装する最適な方法は何ですか?

次の(または前の)日付のデータをロードする関数を作成したいと思います。私は単にデータを現在のビューに読み込むことができますが、OS Xのスペース間をスワイプするのと同様のアニメーションでそれを行うことはできますか?新しいビューを初期化し、そこにデータをロードしてから新しいビューにスワイプするように移行する必要があると思います。

これらの新しいビューをすべて作成することのパフォーマンスはかなり悪いと私は心配しています。ここにいくつかのオプションがあります:

  • NSDateからMYViewControllerの辞書を作成します。このハッシュマップから各ビューをロードして保存しますが、これには大量のメモリが必要です。
  • MYViewControllerの二重リンクリストを作成し、順番に日付を設定したビューをロード/ストアします。これはまた、潜在的に多くのメモリを取る可能性があり、ユーザーが日付にジャンプすると、キャッシュが消えてしまいます。

現在のビューにデータをロードする方法がある場合は、それが最善の選択肢になると思います。

ありがとうございます!

+0

あなたはView Controllerのインスタンスを2つだけ使用することを検討しましたか? 1つは、画面から移動しているデータを表示し、もう1つは画面上に移動しているデータを表示していますか?これは、UITableViewでセルを再利用することに似ています。 –

+0

私はこれを行うことができると思います。それでは、2つのView Controllerを入れ替えてもいいですか?私の唯一の予約は、View Controllerへの他の参照があることです。だから私は現在のものか何かを追跡しなければならないだろうか?これがどのように行われるかの例がありますか? –

+0

だから、私は[this](http://liberatiluca.com/blog/2011/08/03/how-uitableview-reuses-cells/)の行に沿って何かを実装するつもりだと思う。私の実装では、ESViewCacheはUITableViewに類似し、ESViewCacheCellはUITableviewCellに類似しています。私はこれを行う前に、NSTableViewをサブクラス化して現在の "ESViewCacheCell"を表示できるかどうかを確認します。 –

答えて

0

UIScrollViewを使用し、すべてのビューを管理するために1つのUIViewControllerを使用していると考えましたか?

http://www.raywenderlich.com/10518/how-to-use-uiscrollview-to-scroll-and-zoom-content

、別の方法としては、水平方向のテーブルビューを使用して可能性が考えられています。ここUIScrollViewのレイWenderlichのサイトから良いチュートリアルですか?

https://github.com/TheVole/HorizontalTable

編集

申し訳ありませんが、私はすぐにあなたの質問を読んで、それはiOSのためだったと仮定...

:ここで私は他のSOのポストにお勧め見てきたサードパーティの実装、です

私はあなたがおそらくNSCollectionViewのようなものを探しているかもしれないと思う(これはうまくかない水平的にオフスクリーンビューをサポートするかどうかわからない...?)

は、ここでのドキュメントです:

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/NSCollectionView_Class/Introduction/Introduction.html

は、ここでのチュートリアルです:

http://andrehoffmann.wordpress.com/2009/08/29/nscollectionview-tutorial-for-dummies-xcode-3-1-3/

(正直なところあまりOSXの開発を行って、そのビットの専門知識の私の領域の外にしていませんここに...運がいいですね!)

+0

私はUIScrollViewを考慮しましたが、私のケースでは適切ではないと思います。この実装には、限られた数のビューが必要ですか?私のプログラムの各ビューは選択された日に対応しているので、技術的に無限のビュー数があります。水平のテーブルは、私が欲しいものとちょっと同じように聞こえる。 OS X実装について知っていますか?それ以外の場合は、おそらくこれをモデルとして使用し、それを自分で実装することができます。 –

+0

実装では水平テーブルのコンセプトに従ってしまいましたが、動作しているようです。あなたはビデオ[ここ](https://dl.dropbox.com/u/345040/Screen%20Recording%202.mov)をダウンロードすることができます。私はおそらく私は少しそれを磨くときにコードを投稿します。誰かがスクロールするときにその灰色のものを取り除く方法を知っていますか?また、アニメーション中にディバイダやセパレータを追加することも可能ですか?多分私は別の質問をする必要があります.. –

0

カカオビュートランジションアニメーションは簡単なことではありません。これは、View Controller管理よりもはるかに複雑なコーディングです。

希望の効果を達成する方法を決定する必要があります。このドキュメントと他の参考資料を見てください:Animation Programming Guide for Cocoa

私は数ヶ月前に同様の仕事をしました。私の最終的な解決方法は、Core Animationよりもシンプルであるため、単一のビューを使用し、グラフィックスAPI(イメージ描画)のみでアニメーション効果を表示することでした。

関連する問題