如何为已添加在 UIViewController 之上的 tableView 添加自定义单元格?

     2023-02-26     296

关键词:

【中文标题】如何为已添加在 UIViewController 之上的 tableView 添加自定义单元格?【英文标题】:How do I add custom cells for a tableView which has been added on top of a UIViewController? 【发布时间】:2019-08-02 11:48:28 【问题描述】:

我在一个普通的 UIViewController 类上使用了一个 tableView (myTableView)。我希望在这个 tableView 中使用可重复使用的单元格来节省内存。我没有创建单独的 XIB 并将 tableView 组件拖放到 viewController 上。 单元格已使用 UITableViewCell 类型的新类 HistoryTableViewCell 创建,并且该类也具有 XIB。 我还创建了一个 tableViewCell 及其 XIB,并在 tableView(_,cellForRowAt:) 方法中使用了以下代码:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 

    let cell = tableView.dequeueReusableCell(withIdentifier: "historyReuseIdentifier", for: indexPath) as! HistoryTableViewCell
    cell.meetingDateLabel.text = historyArray![indexPath.section]

    return cell

当我在viewDidLoad() 方法中添加以下行时,这行代码可以很好地与 tableViewController 一起使用:

tableView.register(UINib(nibName: "TableViewCell", bundle: nil), forCellReuseIdentifier: "reuseIdentifier")

tableView.register 属性不能与 tableView 一起使用。我如何利用这里的可重复使用的细胞?

【问题讨论】:

提问时请多加努力。不,这不适用于视图控制器或表格视图控制器。您的标识符不匹配。回答你的问题;与使用表格视图控制器的方式完全相同。 我认为你使用了不同的 reusableIdentifier.register 和 dequeable cell 有不同的标识符名称 如果您只有一个表格视图,请删除 XIB 并在 Interface Builder 的表格视图中设计 所有 单元格 @Desdenova 感谢您的建议,问题已更新。我找到了问题的答案。必须使用 _mytableView.register() 而不是使用 tableView.register(),并且代码可以正常工作。 【参考方案1】:

假设你的 xib 没问题,一切正常,唯一剩下的就是注册nib

首先声明你的表格视图:

@IBOutlet weak var tableView: UITableView!

viewDidLoad()

tableView.register(UINib(nibName: "HistoryTableViewCell", bundle: nil) , forCellReuseIdentifier: "historyReuseIdentifier")

还要检查您的 tableView 的 dataSourcedelegate

【讨论】:

这行得通。我可以重用 tableView 中的单元格。此外,您可以将名称从 tableView 更改为任何其他名称(例如:myTableView),并且可以直接访问属性...... myTableView.register(UINib(nibName: "HistoryTableViewCell", bundle: nil ) , forCellReuseIdentifier: "historyReuseIdentifier"))【参考方案2】:

答案其实很简单。在阅读了其他一些答案后,我想通了。

我只需要替换这一行:

tableView.register(UINib(nibName: "TableViewCell", bundle: nil), forCellReuseIdentifier: "reuseIdentifier")

用这个:

UITableView.register(UINib(nibName: "TableViewCell", bundle: nil), forCellReuseIdentifier: "reuseIdentifier")

由于没有名为tableView的表格视图,你需要访问UITableView类。

【讨论】:

【参考方案3】:

你想重用单元格没关系,要使用它们你需要先注册它..假设你在一个 ViewController 中有多个 tableView,那么你必须用各自的 tableView 注册每个单元格。 只需将 tableViewCell 注册到相应的 tableView 并使用您在注册 tabelViewcell 时使用的 reusableIdentifier。

【讨论】:

【参考方案4】:

尝试像这样直接在cellForRowAt indexPath: 中创建它。这里不需要tableView.register(UINib(nibName: "TableViewCell", ... 行。

//And replace names with your names
var cell = tableView.dequeueReusableCell(withIdentifier:"cell") as? TableViewCell
if cell == nil 
     cell = Bundle.main.loadNibNamed("TableViewCell",owner: self, options: nil)?.first as? TableViewCell

【讨论】:

@Desdenova,你能解释一下为什么错了。到目前为止,我一直在关注此代码。 不,你不能,你不能从那个方法返回一个可选项。

如何为 UIViewController 的第一个视图提供带有乘数的垂直间距

】如何为UIViewController的第一个视图提供带有乘数的垂直间距【英文标题】:HowtogiveverticalspacingwithmultipliertothefirstviewofUIViewController【发布时间】:2018-07-0511:02:48【问题描述】:当我为viewController的第一个视图提供垂直间距时,只... 查看详情

以编程方式添加 UITableView - 如何为单元格设置重用标识符?

...ls?【发布时间】:2013-04-0219:07:14【问题描述】:我有一个UIViewController,它在某些时候会增长一个UITableView,当它发生时,我只需初始化TableView实例变量并将其添 查看详情

如何为 YouTube 直播添加字幕?

】如何为YouTube直播添加字幕?【英文标题】:HowtocaptionYouTubeLivestreams?【发布时间】:2020-07-2708:59:45【问题描述】:YouTube提供了在直播中发送字幕的可能性,如here所述。但是,本指南引用了来自YoutubeStudioClassic的链接,该链接已... 查看详情

如何为程序添加splashscreen

参考技术A右键点击要打开的文件,点击打开,选择“从已安装程序列表中选择”,找到你的这个软件的执行程序,并勾选“始终使用选择的程序打开这种文件” 参考技术B右键点击要打开的文件,点击打开,选择“从已安装程序... 查看详情

如何为子域添加单独的谷歌分析

】如何为子域添加单独的谷歌分析【英文标题】:Howtoaddseparategoogleanalyticsforasubdomain【发布时间】:2013-10-2010:13:13【问题描述】:我有一个网站已成功使用谷歌分析一段时间。我有一个已添加为子域的新项目。让我们称之为:newp... 查看详情

如何为程序添加splashscreen

参考技术A右键点击要打开的文件,点击打开,选择“从已安装程序列表中选择”,找到你的这个软件的执行程序,并勾选“始终使用选择的程序打开这种文件” 查看详情

如何为我在 Swift 中以编程方式创建的 UIViewController 子类创建 init?

】如何为我在Swift中以编程方式创建的UIViewController子类创建init?【英文标题】:HowdoIcreatetheinitforaUIViewControllersubclassthatIcreateprogrammaticallyinSwift?【发布时间】:2014-06-3018:45:59【问题描述】:假设我的UIViewController有两个属性,varani... 查看详情

如何为没有情节提要的 UIViewController (Swift) 提供标识符?

】如何为没有情节提要的UIViewController(Swift)提供标识符?【英文标题】:HowtogiveanidentifierforUIViewController(Swift)whichhasnostoryboard?【发布时间】:2019-12-1014:44:26【问题描述】:我有多个以编程方式创建的视图控制器。(没有故事板)... 查看详情

如何为 UIViewController.view 中也具有 UITapGestureRecognizer 的 UIView 挑选和操作 UITapGestureRecognizer?

】如何为UIViewController.view中也具有UITapGestureRecognizer的UIView挑选和操作UITapGestureRecognizer?【英文标题】:HowtosingleoutandactionaUITapGestureRecognizerforaUIViewthatisintheUIViewController.viewthatalsohasaUITapGestureRecognizer?【发布时 查看详情

如何为回收站添加上下文菜单

】如何为回收站添加上下文菜单【英文标题】:HowcanIaddacontextmenuforrecyclebin【发布时间】:2012-08-2114:37:32【问题描述】:如何为Windows回收站添加上下文菜单?我如何最终访问其中的文件?我知道回收站是一个虚拟文件夹,它有一... 查看详情

您如何为代码签名的 Dotnet 程序集添加时间戳?

】您如何为代码签名的Dotnet程序集添加时间戳?【英文标题】:Howdoyoutimestampcode-signedDotnetassemblies?【发布时间】:2011-12-0214:25:46【问题描述】:当您使用代码签名证书对程序集进行签名时,如何确保代码具有时间戳?请参阅here... 查看详情

如何为 geom_tile 中的每个变量添加单独的图例?

】如何为geom_tile中的每个变量添加单独的图例?【英文标题】:HowdoIaddaseparatelegendforeachvariableingeom_tile?【发布时间】:2021-05-0210:32:49【问题描述】:我想为每个变量设置一个单独的比例尺。我在整个水柱中进行了测量,其平均值... 查看详情

如何为 iOS 表单使用 Eureka pod 的位置?

】如何为iOS表单使用Eurekapod的位置?【英文标题】:howtouselocationforEurekapodforiOSform?【发布时间】:2019-05-0620:04:27【问题描述】:我已使用适用于iOS的Eureka表单生成器成功添加了各种文件,但在添加locationrow时出现错误我导入以下... 查看详情

如何为边框动画添加悬停过渡

】如何为边框动画添加悬停过渡【英文标题】:Howtoaddahovertransitiontoananimationofborders【发布时间】:2021-08-1311:25:40【问题描述】:我希望能够将鼠标悬停在这个动画上并让它过渡到另一种颜色。我无法将此转换添加到变量中。标... 查看详情

如何为特定的星期几设置重复通知?

】如何为特定的星期几设置重复通知?【英文标题】:Howtosetrepeatednotificationforspecificdayofweek?【发布时间】:2016-02-0613:08:24【问题描述】:我正在寻找在工作日设置通知。我在警报对话框中添加了一串天来显示天数。我想设置用... 查看详情

如何为加载已关闭的外部 javascript 文件设置超时

】如何为加载已关闭的外部javascript文件设置超时【英文标题】:Howtosetatimeoutforloadingaexternaljavascriptfilewhichisdown【发布时间】:2011-07-2706:12:55【问题描述】:我正在使用javascript来包含从另一台服务器上的php文件提供的一些内容。... 查看详情

如何为 ImageButton 添加阴影?

】如何为ImageButton添加阴影?【英文标题】:HowcanIaddshadowtoImageButton?【发布时间】:2014-10-1010:57:37【问题描述】:这是我第一次发帖。我一直在使用这个网站作为一个很好的资源。但是我遇到了一个问题。我尝试对ImageButton应用... 查看详情

如何为 vue 插件添加类型?

】如何为vue插件添加类型?【英文标题】:howtoaddtypesforvueplugin?【发布时间】:2019-08-1403:32:22【问题描述】:我尝试使用类型脚本为vue添加self插件。但是当我使用vue原型中的方法时,我的方法$auth在myComponent类型上不存在。我还... 查看详情