検索

ホームページ  >  に質問  >  本文

ios - 如何在UITableviewCell中创建UITableView(和UICollectionView)?

请允许我用Storyboard来表明我的需求。
如图,在这个tableview里面有两个大的cell,一个是另外tableview,一个是collectionview。而且这两个大的cell的高度不是固定的,当点击加载更多的时候,对应的cell里面的tableview长度会增长,cell也会增长(换言之,在这两个cell里面所有内容都需要被全部展示,而不是滑动)。请问如果是这种需求的话,该如何设计呢?

怪我咯怪我咯2866日前844

全員に返信(5)返信します

  • PHP中文网

    PHP中文网2017-04-17 14:27:26

    解決策

    你的情况其实仅仅一个collectionView就可以搞定了,根据数据源分组对应分几个section,展示更多时候,就修改对应section中的数据源,刷UI就好了,你所“必须”要关注的是你的CollectionView的contentSize以及如何Layout,还有优化的话考虑Cache layout类中的attributes.

    入れ子になったスキーム

    今日、このように collectionView のネストされた collectionView を書きました (問題を探しているだけではなく、要求されました)。そのアイデアについて話しましょう (TableView のネストも同様です。XIB/SB と純粋なコードの違いは無視してください...) )
    PS:いくつか間違いがあります。CollectionView マスターが来て修正してくれるといいのですが...Orz
    1) カスタムセル
    collectionView をハングする必要があるセルに次のコードを貼り付けます:

    リーリー

    2) セル内の CollectionView はセルの後に初期化されることに注意してください。つまり、セル内の CollectionView のデータ ソースとプロキシはセルを初期化した直後に設定する必要があります。そうしないとクラッシュについては説明されません。

    3.1) セル内の CollectionView のデータ ソースを変更し (データのアクティブ/パッシブ変更などの変更がある場合)、CollectionView 属性を変更し (layoutAttribute が変更されます)、2 つの CollectionView を再配置します。 (tableViewはreloatに対応するindexPathです)

    4) 愚痴を言い続ける: CollectionView の本質はレイアウトを書けるかどうかにあります。 。 CollectionView を使用すると、TableView に別れを告げることができますが、学習するのにある程度の時間がかかり、そうでないと使いこなすのが難しくなります。 推奨リソース:

    • Apple 公式ドキュメント
    • iOS UICollectionView、第 2 版電子書籍
    • RayWench ビデオ

    返事
    0
  • 大家讲道理

    大家讲道理2017-04-17 14:27:26

    セル内では tableView を使用しないことをお勧めします

    理論的にはセルにUITableViewを追加する(外側のセルを内側のtableViewのデリゲートとして機能させる)ことは可能かもしれませんが、そのような書き方は見たことがなく、非常にまずい気がします。理由は 2 つあります:

    1. デリゲートは複雑であり、ビューのカスケード関係も複雑です
    2. これではあなたのニーズは満たされません。あなたは欲しいと言った:

    対応するセルのテーブルビューの長さが長くなり、セルも長くなります (つまり、これら 2 つのセルのすべてのコンテンツは、スライドするのではなく完全に表示される必要があります)

    しかし、UITableView の高さは固定されており、内部には ScrollView があります。当然、全表示ではなくスクロールに適しています。

    考えられる代替手段

    この要件は、上下 2 つの大きなセルを 2 つのセクションとして考えることができると思います。上の大きなセルは最初のセクションに変更され、内部のセルには左側に写真があり、最後のセルは「さらに読み込む」と表示され、下の大きなセルは 2 番目のセクションに変更されます。それはコレクションビューの状況によって異なります。たとえば、最初に行に 5 つの項目がある場合、それらを各セルに配置することも、1 つのビューに配置して、このビューを唯一のセルまたは headerView に追加することもできます。次に、フッターまたは最後のセルがさらに読み込まれます。

    返事
    0
  • PHP中文网

    PHP中文网2017-04-17 14:27:26

    こちらの方法をご利用ください。

    リーリー

    返事
    0
  • 阿神

    阿神2017-04-17 14:27:26

    uitableview を uitablewview に追加したい場合は、オンラインで検索して、オープンソースのものが存在するかどうかを確認できます。見たのを覚えています。
    uicollection を uitableview に追加する場合。アイデアを提案します。以前のプロジェクトでも同様の問題に遭遇したためです。あなたの考えを教えてください。

    uitableview はセルの定義をサポートしているため、セルに collectionview を記述してから collectioncell を定義できます。それは確かに実現可能であり、個人的にはコードの量はそれほど多くないと感じます。データをロードするときは、毎回データがセルに渡され、コレクションビューがデータをロードします。
    コードを通じてセル内の高さを計算できます。これは可能です。

    コンピューターが近くにないので...コードは投稿しません。必要であればメッセージを残していただければ、月曜日に uitableview collection 用に書いたコードを投稿します。

    返事
    0
  • 高洛峰

    高洛峰2017-04-17 14:27:26

    解決策を持っている人はいますか?対立の解決を目指します。

    返事
    0
  • キャンセル返事