热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

RxSwift的集合视图不显示任何项目-collectionViewwithRxSwiftnotshowinganyitems

ImtryingtocreateacollectionViewandpopulatedataintoitusingRxSwift.Howevereventhoughi

I'm trying to create a collectionView and populate data into it using RxSwift. However even though it seem to return objects in datasource.configureCell it doesn't show any cells. I suspect that there is something wrong with my setup in viewDidLoad ?

我正在尝试创建一个collectionView并使用RxSwift将数据填充到其中。然而,即使它似乎返回数据源中的对象。它不显示任何单元格。我怀疑我在viewDidLoad的设置有问题?

Setup collectionView

设置collectionView

    // Create a waterfall layout
    let layout = CHTCollectionViewWaterfallLayout()

    //Add CollectionView
    self.collectiOnView= UICollectionView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height), collectionViewLayout: layout)

    self.view.addSubview(collectionView)

    //Customize
    self.collectionView!.alwaysBounceVertical = true

    // Collection view attributes
    self.collectionView.autoresizingMask = [UIViewAutoresizing.flexibleHeight, UIViewAutoresizing.flexibleWidth]
    self.collectionView.alwaysBounceVertical = true

    //Register cell
    collectionView.register(PetsaleCell.self, forCellWithReuseIdentifier: reuseIdentifier)


    //Constraints
    self.collectionView.snp.makeConstraints({ make in
        make.bottom.equalTo(0)
        make.left.equalTo(0)
        make.right.equalTo(0)
        make.top.equalTo(0)

    })

    //Datasource
    setUpDataSource()

setUpDataSource

setUpDataSource

func setUpDataSource() {
    dataSource.cOnfigureCell= { (_, tv, ip, animal: Animal) in

        let cell = tv.dequeueReusableCell(withReuseIdentifier: self.reuseIdentifier, for: ip) as! PetsaleCell
        cell.petCellViewModel = PetCellViewModel(animal: animal)

        return cell
    }



    let loadNextPageTrigger = self.collectionView.rx.contentOffset
        .flatMap { _ in
            self.collectionView
                .isNearBottomEdge(edgeOffset: 20.0)
                ? Observable.just(())
                : Observable.empty()
    }

    animalViewModel.rx_animals(loadNextPageTrigger)
        .asDriver(onErrorJustReturn: .empty).map { [SectionModel(model: "Animal", items: $0.animals)] }
        .drive(collectionView.rx.items(dataSource: dataSource))
        .addDisposableTo(disposeBag)
}


func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: IndexPath) -> CGSize {
    return CGSize(width: 200, height: 200)
}

2 个解决方案

#1


1  

You need to set your delegate just after the dataSources binding.

您需要在dataSources绑定之后设置您的委托。

collectionView
    .rx.delegate
    .setForwardToDelegate(self, retainDelegate: false)

#2


0  

Try and add the following in your viewDidLoad()

尝试在viewDidLoad()中添加以下内容

collectionView.delegate = self
collectionView.dataSource = self

and then implement the delegate and datasouce as extensions to your class as following:

然后,将委托和datasouce实现为您的类的扩展,如下所示:

extension MyClass: UICollectionViewDelegate, UICollectionViewDataSource     { 
// add extension methods here such as cellForItemAt 
}

推荐阅读
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 本文详细介绍了Android中的坐标系以及与View相关的方法。首先介绍了Android坐标系和视图坐标系的概念,并通过图示进行了解释。接着提到了View的大小可以超过手机屏幕,并且只有在手机屏幕内才能看到。最后,作者表示将在后续文章中继续探讨与View相关的内容。 ... [详细]
  • 带添加按钮的GridView,item的删除事件
    先上图片效果;gridView无数据时显示添加按钮,有数据时,第一格显示添加按钮,后面显示数据:布局文件:addr_manage.xml<?xmlve ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文讲述了如何通过代码在Android中更改Recycler视图项的背景颜色。通过在onBindViewHolder方法中设置条件判断,可以实现根据条件改变背景颜色的效果。同时,还介绍了如何修改底部边框颜色以及提供了RecyclerView Fragment layout.xml和项目布局文件的示例代码。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 本文介绍了UVALive6575题目Odd and Even Zeroes的解法,使用了数位dp和找规律的方法。阶乘的定义和性质被介绍,并给出了一些例子。其中,部分阶乘的尾零个数为奇数,部分为偶数。 ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 本文介绍了一款名为TimeSelector的Android日期时间选择器,采用了Material Design风格,可以在Android Studio中通过gradle添加依赖来使用,也可以在Eclipse中下载源码使用。文章详细介绍了TimeSelector的构造方法和参数说明,以及如何使用回调函数来处理选取时间后的操作。同时还提供了示例代码和可选的起始时间和结束时间设置。 ... [详细]
  • 本文介绍了一个Magento模块,其主要功能是实现前台用户利用表单给管理员发送邮件。通过阅读该模块的代码,可以了解到一些有关Magento的细节,例如如何获取系统标签id、如何使用Magento默认的提示信息以及如何使用smtp服务等。文章还提到了安装SMTP Pro插件的方法,并给出了前台页面的代码示例。 ... [详细]
author-avatar
倒退淂磁带_628
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有