2016-10-23 7 views
-1

カレンダーアプリケーションが新しいイベントを作成するときに使用する折りたたみ可能な日付ピッカーを再作成しようとしています。私がやろうとしていることの例を入れましたgithub折りたたみテーブルセル[Swift 3]

つまり、3つのセルが追加された静的なテーブルを作成しました。最初のセルは日付用で、2番目のセルを切り替えるボタンが含まれています。 2番目のセルは日付ピッカーです。 3番目のセルは任意です。コードでは、テーブルセルの高さ(および必要に応じて日付ピッカー)をゼロに設定し、ユーザーがボタンをクリックするたびにサイズを切り替えようとしています。私が何を試しても、a)何らかのギャップなしでセルを崩壊させることはできません。また、アニメーションを拡大してから折りたたんだり、元に戻したりすることができます。

編集:この質問は重複する回答と同じではありません。別の表のセルを展開し、同じセルを選択しないようにしたいという点でこの質問は同じです。しかし、私は個人的には同じセル展開を使って暮らすことができます。私は将来の人々が実際の例を見ることができるように私のgithubプロジェクトを更新しました。

+0

これは複製を_is_。拡大/縮小を引き起こすメカニズムはストーリーとは無関係であり、導入するのは簡単ではありません。あなたの質問は拡大/縮小そのものに関するもので、それはその質問の答えに正しく記述されています。さらに、私は私の答えでそれを完全に記述しました。私が言ったこと以上にそれ以上のことはありません。 – matt

+0

問題ありません。あなたの時間と忍耐のために再びありがとう。私はたくさんのことを学んだ。 – dohpaz42

答えて

3

非常に簡単です。あなたはおそらくここで事を考えすぎているでしょう。この機能は組み込まれています。 Apple は、あなたがセルを展開したり縮小したりできるようにしたいと考えています。 Appleが提供しているAPIを使用していないだけです。これを使って!方法は次のとおりです。

日付ピッカーのセルは、です。常にです。しかし、それらの高さはゼロです(そしてそれらのclipsToBoundstrueです)ので、あなたはそれらを見ません。したがって、heightForRowAtIndexPathを実装して、これらのセルに0を返します。

と言う(この値を保持している性質を持っている場合、あなただけのプロパティ値を変更し、そこからそれを読むheightForRowAtIndexPath持つことができるので、これは、最も簡単です)何heightForRowAtIndexPath戻っ変更、日付ピッカーのセルを表示するには:

self.tableView.beginUpdates() 
    self.tableView.endUpdates() 

これだけです。

ここで私が作成した簡単なデモです。赤とオレンジのものは細胞です。表は、三つのセルを有するが、日付ピッカーを含む第二の一方は、ゼロ高さで始まり:_The answer_が存在与えられるので

enter image description here

+0

私は、別のテーブルセルをどのように展開していたか少し混乱しています。あなたのサンプルコードを投稿できますか?私はそれを派生したソリューションと比較したいと思います。ありがとう! – dohpaz42

+0

まあ、私は私の答えでそれを記述したと思う。ボタンはちょうど言う: 'self.height = self.height> 0? 0:200; self.tableView.beginUpdates(); self.tableView.endUpdates() 'そして、私の実装である' heightForRowAt'はその行の値( 'self.height')を取得します。 – matt

+0

あなたはそれを説明しているかもしれませんが、それは私にはあまり意味がありません(私はこれに新しい、btwです)。どのように 'heightForRowAt'で3つの値を返すのですか?セル1と3には通常の行の高さがあり、セル2の初期値にはゼロがあり、セル2には拡張された高さがあります。私があなたのコードを見るように頼んだのは、概念的に私には意味がないからです。また、私はそれを動作させることができますが、2番目のセルは通常の行の高さを持っています。さもなければ、拡大と崩壊の仕事。 – dohpaz42

関連する問題