gpt4 book ai didi

swift - 将 UITableViewCell 的 IBOutlet 与两个不同的 UITableViewController 重用

转载 作者:行者123 更新时间:2023-11-30 10:14:40 25 4
gpt4 key购买 nike

我正在创建一个咖啡计时器作为学习练习,我希望根据所选的冲泡方法有一个不同的菜单。我将我的设置存储在 NSUserDefaults 中,并使用两个单独的数组填充我的表,如下所示:

var aero = ([
"Cool Down Time Enabled" : true,
"Cool Down Time" : 30,
"Inverted" : true,
"Base Steep Time" : 150,
"Base Inverted Steep Time" : 180,

])

var french = ([
"Cool Down Time Enabled" : true,
"Cool Down Time" : 30,
"Base Steep Time" : 180,

])

我创建了两个 UITableViewController,一个用于 FrenchPress,一个用于 AeroPress,它们基本上是相同的代码:

FrenchPressTableViewController.swift - 设置菜单

AeroPressTableViewController.swift - 设置菜单

两者都将值分配给我的Setting.Swift类(gist)的实例并存储在不同的数组中。

在 IB 中,我从法式媒体 Controller 开始,创建了两个原型(prototype)单元和两个原型(prototype)类来配合它们。

SwitchCell.Swift - 我的 UISwitch 原型(prototype)电池 socket 的模型

TimingCell.Swift - 为我的 TimingButton 原型(prototype)电池 socket 建模

采取的初步步骤:

  • 在 IB 中为我的 French Press 设置创建新的 tableView。
  • 创建指定FrenchPressTableViewController ,并将其分配给我的新法压壶表格 View
  • 使用我的 SettingCell 设置两个新的原型(prototype)单元并设置 IBOutlet/Actions & TimingCell类。
  • IBOutlet 从我的 FrenchPressTableViewController 连接到我的 SettingCell.swift(我稍后将这些导出重新用于我的 Aero 设置)。

我的 FrenchPress 设置工作正常: enter image description here

所以我决定使用相同的过程添加我的 Aero 新闻设置菜单:

  • 在IB中创建新的tableView
  • 创建 AeroPressTableViewController ,并将其分配给我的新航空 TableView
  • 设置两个新的原型(prototype)单元,并将我之前存在的SettingCell 和 TimingCell 分配给正确的单元。
  • 我利用之前连接到 FrenchPressTableViewController 的 socket ,并将它们连接到 Aero Controller 以重用单元类。

最终产品如下所示:

enter image description here

但是当我运行 Aero 设置菜单时,出现以下错误:

fatal error: unexpectedly found nil while unwrapping an Optional value

enter image description here

enter image description here

问题:

从我的调试器中可以看出,我的 SettingCell 类似乎通过 cell.switchLabel.text 返回了 nil 值。这对我来说没有意义,因为我试图为其分配一个值。

显然我做错了什么,重用 UITableViewCell 类的正确方法是什么?

最佳答案

将 UITableViewCell 类注册为 tableView.registerClass(SwitchCell.self,forCellReuseIdentifier:"SwitchCell2")

时会出现此问题

删除该行tableView.registerClass(SwitchCell.self,forCellReuseIdentifier:"SwitchCell2")并在 Storyboard中设置cellIdentifier..它可以工作

关于swift - 将 UITableViewCell 的 IBOutlet 与两个不同的 UITableViewController 重用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30858166/

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