标签: uicollectionviewcell

错误:尝试将项目 0 插入第 0 节,但更新后第 0 节中只有 0 个项目

我的代码:

    DataService.dataService.fetchDataFromServer { (channel) in
        self.channels.append(channel)
        let indexPath = IndexPath(item: self.channels.count - 1, section: 0)
        self.collectionView?.insertItems(at: [indexPath])
    }
Run Code Online (Sandbox Code Playgroud)

从服务器获取数据功能:

 func fetchDataFromServer(callBack: @escaping (Channel) -> ()) {
        DataService.dataService.CHANNEL_REF.observe(.childAdded, with: { (snapshot) in
            let channel = Channel(key: snapshot.key, snapshot: snapshot.value as! Dictionary<String, AnyObject>)
            callBack(channel)
        })
    }
Run Code Online (Sandbox Code Playgroud)

项目数量部分:

override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    // #warning Incomplete implementation, return the number of items
    return 0
}
Run Code Online (Sandbox Code Playgroud)

完整错误:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'attempt to insert …
Run Code Online (Sandbox Code Playgroud)

ios uicollectionviewcell swift indexpath

1
推荐指数
1
解决办法
1万
查看次数

ValueType "tableViewCell" 没有成员 navigationController

我在 tableView 单元格中有一个 collectionView。我想点击 collectionView 单元格并使用传入的信息转到 detailTableView。我没有很多工作。做了一些研究,它指出 tableView 单元格既没有故事板也没有导航控制器。我如何能够将数据传递到 detailTableView。这是我的实现,可能不正确

class PopularTableViewCell: UITableViewCell {
     var books = [CKRecord]()
     var detailViewController: DetailViewController!
} 


extension PopularTableViewCell: UICollectionViewDataSource {
   func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
        let record = books[indexPath.row]
        let storyBoard = UIStoryboard(name: "Home", bundle: nil)
        if let detailVC = storyBoard.instantiateViewController(withIdentifier: "DetailVC") as? DetailViewController {
            detailVC.bookRecord = record
           detailViewController.navigationController?.pushViewController(detailVC, animated: true)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

uitableview pushviewcontroller ios uicollectionviewcell swift

1
推荐指数
1
解决办法
2704
查看次数

当 UICollectionViewCell 不在视野中时尝试暂停视频

我正在使用从 Firebase 加载的 URL 填充集合视图。但是当我退出视图或向上滚动集合视图时,我无法让视频暂停。当我使用导航控制器返回时,我仍然可以听到后台播放的视频。然后当我再次进入视图时,视频开始播放,但第一个从未完成。

这是我的视图控制器。有小费吗?谢谢你!我还是 Swift 的新手,所以请原谅我的无知。

import UIKit
import AVKit
import AVFoundation
import Firebase
import FirebaseDatabase
import SDWebImage

class ComedyViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate {

    var avPlayer = AVPlayer()
    var avPlayerLayer = AVPlayerLayer()

    @IBOutlet weak var comedyCollectionView: UICollectionView!

    var comedyVideoArray = [ComedyModel]()

    var comedyDBRef: DatabaseReference! {
        return Database.database().reference().child("comedy")
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        loadComedyDB()
    }


    func loadComedyDB() {
        comedyDBRef.observe(DataEventType.value, with: { (snapshot) in

            if snapshot.childrenCount > 0 {
                self.comedyVideoArray.removeAll()

                for comedyData in snapshot.children.allObjects as! [DataSnapshot] {
                    let comedyObject …
Run Code Online (Sandbox Code Playgroud)

xcode avplayer uicollectionview uicollectionviewcell swift

1
推荐指数
1
解决办法
3753
查看次数

如何使 UICollectionViewCells 具有圆角和阴影?

我已经看到了类似问题的其他一些答案,但即使进行了一些调整,这些解决方案都对我不起作用。

正如标题所示,我希望我的UICollectionViewCells 有圆角和阴影(或除了顶部之外的所有侧面都有阴影)。到目前为止,我所做的是将两个视图添加到我的UICollectionViewCell-中mainView,它显示单元格的必要内容并具有圆角,并且shadowView,它具有阴影。两个视图都不是另一个视图的子视图,它们一起存在于同一个单元格中。它们的尺寸完全相同,并且mainView明显显示在 的顶部shadowView。这是我当前的代码实现:

let mainView = cell.viewWithTag(1003) as! UIView       
mainView.layer.cornerRadius = 10.0
mainView.layer.borderWidth = 1.0
mainView.layer.borderColor = UIColor.clear.cgColor
mainView.layer.masksToBounds = true

let shadowView = cell.viewWithTag(1002) as! UIView
shadowView.layer.shadowColor = UIColor.black.cgColor
shadowView.layer.shadowOffset = CGSize(width: 0, height: 2.0)
shadowView.layer.shadowRadius = 2.0
shadowView.layer.shadowOpacity = 0.5
shadowView.layer.masksToBounds = false
shadowView.layer.shadowPath = UIBezierPath(roundedRect: shadowView.bounds, cornerRadius: mainView.layer.cornerRadius).cgPath
Run Code Online (Sandbox Code Playgroud)

以下是这段代码产生的结果: 在此输入图像描述 有人会认为mainView它的角不够圆,阴影不够大。

然而,在删除 的背景shadowView并将其设置UICollectionView为黑色后,您可以看到 的mainView角实际上非常圆滑: 在此输入图像描述

所以这意味着问题在于 的shadowView …

uiview ios uicollectionview uicollectionviewcell swift

1
推荐指数
1
解决办法
8538
查看次数

集合视图单元格中的 iOS 渐变颜色问题

我在设置渐变颜色以在集合视图中查看时遇到此问题

当它第一次绘制时很好。但是当我选择一些选项并重新加载集合时,它会像第二张图片一样发生。

viccalexander/变色龙 ( https://github.com/viccalexander/Chameleon )

在此处输入图片说明

在此处输入图片说明

gradient ios chameleon uicollectionviewcell swift

1
推荐指数
1
解决办法
1317
查看次数

Swift - 按单元分页 UICollectionView 同时保持单元格水平居中

首先,不确定标题是否正确或提供了最好的描述,但我不确定还可以使用什么。

所以,我正在开发一个应用程序,但我在实现 UI 时遇到了卡住的部分。基本上,我有一个 VC(下图),它可以根据我从 JSON 文件中获得的信息进行自我定位。

在此处输入图片说明

问题是我需要在上侧有一个类似轮播的菜单,其中包含未定义数量的单元格(同样,取决于我从 JSON 文件中获得的内容)。我决定为此使用 UICollectionView 并且我设法毫无问题地实现了基础知识。

但这是我卡住的部分:

  1. 由于选定的单元格必须始终居中,当第一个和最后一个单元格被选中时,我需要在单元格和安全区域之间留出一个空白区域(见上图)。
  2. 滚动需要分页。通常,如果 UICollectionView 单元格的宽度几乎等于屏幕之一,则这不会成为问题,但要求是能够一次滚动一个元素(参见上面的第二个屏幕)。

我试图找到类似的东西,但也许我没有在寻找正确的东西,因为我能找到的只是按单元格而不是屏幕分页 UICollectionView

另外,老实说,我从未见过具有这种行为的应用程序/ UICollectionView。

我在下面发布了部分代码,但它并没有多大帮助,因为它只是标准的 UICollectionView 方法。

有什么建议?

class PreSignupDataVC : UIViewController, UICollectionViewDelegateFlowLayout, UICollectionViewDataSource, UIPickerViewDelegate, UIPickerViewDataSource

@IBOutlet weak var cvQuestions: UICollectionView!

var questionCell : PreSignupDataQuestionCellVC!
var screenData : Array<PreSignupScreenData> = Array<PreSignupScreenData>()
var pvDataSource : [String] = []
var numberOfComponents : Int = 0
var numberOfRowsInComponent : Int = 0
var currentScreen : Int = 1
var selectedType : Int?
var selectedCell : …
Run Code Online (Sandbox Code Playgroud)

uipickerview scroll-paging uicollectionview uicollectionviewcell swift

1
推荐指数
1
解决办法
3533
查看次数

自定义集合视图单元无法正常工作

尝试创建自定义单元格,但是当我在单元格collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath)中添加标签时不起作用。

没有标签单元格 UI:

在此处输入图片说明

iPad 模拟器 UI 是:

在此处输入图片说明

但是当我在单元格中添加标签时:

在此处输入图片说明

iPad 模拟器 UI 变为:

在此处输入图片说明

UICollectionViewDelegateFlowLayout方法中:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    let emptySpace = 87*2 + 10
    let remainingWidth = Int(self.view.frame.width) - emptySpace
    return CGSize(width: remainingWidth/2, height: remainingWidth/2)
}
Run Code Online (Sandbox Code Playgroud)

ios uicollectionview uicollectionviewcell swift

1
推荐指数
1
解决办法
940
查看次数

UICollectionViewCell 的标签宽度错误

我发现了一些奇怪的东西。
我创建了一个自定义 UICollectionViewCell 并在其中创建了一个标签。
我只对标签的顶部、前导和底部应用了自动布局。

在此处输入图片说明

class TestCollectionViewCell: UICollectionViewCell {
    @IBOutlet weak var label: UILabel!

    override func awakeFromNib() {
        super.awakeFromNib()
    }
}
Run Code Online (Sandbox Code Playgroud)

如果文本很长,它会像下面一样从屏幕上剪下来。

在此处输入图片说明

如果文本太长,我希望文本仅显示为“...”。
所以我像这样应用了traling自动布局。

在此处输入图片说明

然后, collectionViewCell 的宽度被破坏了。

在此处输入图片说明

这是我的代码。
我已经设置了委托,数据源。

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }

}

extension ViewController: UICollectionViewDataSource {
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return 20
    }

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as? TestCollectionViewCell else { return …
Run Code Online (Sandbox Code Playgroud)

ios autolayout uicollectionview uicollectionviewcell swift

1
推荐指数
1
解决办法
339
查看次数

如何在 UICollectionView 中拥有自定义单元格

我有一个 UICollectionView,我想让它显示 3 个自定义单元格。

我已阅读文档,但无法解决此问题。

我有什么遗漏的吗?

      func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return 1
}
Run Code Online (Sandbox Code Playgroud)

我尝试将 return 1 更改为 3 以使 3 个自定义单元格出现,但它只使第一个自定义单元格出现 3 次。

我创建了一个视频并链接了下面的视频来解释我的情况。

https://www.loom.com/share/9b5802d6cc7b4f9a93c55b4cf7d435bb

编辑我使用了@Asad Farooq 方法,它似乎对我有用。我添加了如下所示的 CollectionView,现在我可以制作自定义单元格!

    if(indexPath.item==0)
    {
        let cell  = collectionView.dequeueReusableCell(withReuseIdentifier: "DailyCollectionViewCell", for: indexPath) as! DailyCollectionViewCell
        return cell
    }
    if(indexPath.item==1)
    {
        let cell  = collectionView.dequeueReusableCell(withReuseIdentifier: "WeeklyCollectionViewCell", for: indexPath) as! WeeklyCollectionViewCell
        return cell
        
    }
    else {
    
        let cell  = collectionView.dequeueReusableCell(withReuseIdentifier: "MonthlyCollectionViewCell", for: indexPath) as! MonthlyCollectionViewCell
        return cell
    }
}
Run Code Online (Sandbox Code Playgroud)

ios uicollectionview uicollectionviewcell swift

1
推荐指数
1
解决办法
6858
查看次数

如何更改 UICollectionView 中所选项目的单元格背景颜色并快速将其他单元格颜色更改为默认值

我是 swift 新手,我正在尝试更改 UICollectionView 的单元格背景颜色,但它不起作用我的代码在 cellForItemAt 中是这样的

if(cell.isSelected){
    cell.backgroundColor = UIColor.green
    }else{
       cell.backgroundColor = UIColor.clear
 }
Run Code Online (Sandbox Code Playgroud)

有什么方法可以仅将选定的单元格颜色更改为绿色,而将其他单元格颜色更改为清除 提前致谢!

ios uicollectionview uicollectionviewcell swift

1
推荐指数
1
解决办法
2359
查看次数