gpt4 book ai didi

swift - 使用 FirebaseUI 和 Swift 自定义 TableViewCell

转载 作者:行者123 更新时间:2023-11-28 12:52:45 27 4
gpt4 key购买 nike

我目前正在尝试使用 Firebase UI 来使用自定义单元格填充 UITableView。不幸的是,事实证明这很困难,而且之前建议的修复方法无效。

文档 ( https://github.com/firebase/FirebaseUI-iOS#using-storyboards-and-prototype-cells) 证明了这一点:

self.dataSource = FirebaseCollectionViewDataSource(ref: firebaseRef cellClass: YourCustomClass.self cellReuseIdentifier: @"<YOUR-REUSE-IDENTIFIER>" view: self.collectionView)

self.dataSource.populateCellWithBlock { (cell: YourCustomClass, obj: NSObject) -> Void in
// Populate cell as you see fit
cell.customView = customView;
}

self.collectionView.dataSource = self.dataSource;

复制这个并插入我自己的 TableViewCellClass 会产生这个错误:

Cannot convert value of type '(ManageTableViewCell, NSObject) -> Void' to expected argument type '(UITableViewCell, NSObject) -> Void'

然后我看到了这个问题线程(https://github.com/firebase/FirebaseUI-iOS/issues/16),其中一位 Firebase 团队说强制转换会像这样工作:

 self.dataSource.populateCellWithBlock { (cell: UITableViewCell, obj: NSObject) -> Void in
// Populate cell as you see fit, like as below
var customCell = cell as! CustomTableViewCell;
let snapshot = obj as! FDataSnapshot; // danger this can be null on deletion!
}

但是这会立即产生错误:

Cannot downcast from 'UITableViewCell' to a more optional type 'ManageTableViewCell!'

有没有人对如何做到这一点有任何建议。这似乎是一个没有真正解决办法的常见问题。

最佳答案

我解决了。问题是您需要使用“prototypeReuseIdentifier”而不是“cellReuseIdentifier”。

我的工作代码如下:

    dataSource = FirebaseTableViewDataSource(query: firebaseQuery, prototypeReuseIdentifier: "textCell", view: self.tableView)

dataSource.populateCellWithBlock { (cell: UITableViewCell, obj: NSObject) -> Void in

var customCell = cell as! ManageTableViewCell

let snap = obj as! FDataSnapshot

customCell.label99.text = snap.key as String
}

关于swift - 使用 FirebaseUI 和 Swift 自定义 TableViewCell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35962825/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com