我正在创建一个咖啡计时器作为学习练习,我想根据所选的酿造方法选择不同的菜单。我将我的设置存储在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,
])
我创建了两个 UITableViewControllers,一个用于FrenchPress,另一个用于AeroPress,它们的代码基本相同:
FrenchPressTableViewController.swift - 设置菜单
AeroPressTableViewController.swift - 设置菜单
两者都为我的Setting.Swift类(gist)的实例赋值,并存储在不同的数组中。
在IB中,我开始使用我的法式印刷机控制器,并创建了两个原型单元和两个原型类,以便与它们一起使用。
SwitchCell.Swift - 我的UISwitch原型电池插座的模型
TimingCell.Swift - 模拟我的TimingButton原型细胞出口
采取的初步措施:
我的FrenchPress设置工作正常:
所以我决定使用相同的过程添加我的Aero印刷机设置菜单:
最终产品如下所示:
但是当我运行Aero设置菜单时,出现以下错误:
致命错误:在解包可选值时意外发现nil
从我的调试器中可以看出,我的 SettingCell 类看起来像cell.switchLabel.text
返回 nil 值。这对我来说没有意义,因为我正在尝试为它赋值。
显然我做错了什么,重用我的UITableViewCell类的正确方法是什么?
答案 0 :(得分:1)
将UITableViewCell类注册为tableView.registerClass(SwitchCell.self,forCellReuseIdentifier:"SwitchCell2")
删除该行tableView.registerClass(SwitchCell.self,forCellReuseIdentifier:"SwitchCell2")
并在storyboard中设置cellIdentifier ..它可以正常工作