I'm creating a coffee timer as a learning exercise and I want to have a different menu based on the brewing method selected. I'm storing my settings in NSUserDefaults and populating my tables with two separate arrays that look like this:
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, ])
I created two UITableViewControllers, one for FrenchPress and one for AeroPress, they are largely the same code:
FrenchPressTableViewController.swift - settings menu
AeroPressTableViewController.swift - settings menu
Both assign values to instances of my Setting.Swift class (gist) and get stored in different arrays.
In IB I started with my french press controller and created two prototype cells and two prototype classes to go along with them.
SwitchCell.Swift - Model for my UISwitch prototype cell outlets
TimingCell.Swift - Models my TimingButton prototype cell outlets
Initial Steps taken:
- Create new tableView in IB for my French Press settings.
- Create a designated FrenchPressTableViewController, and assign it to my new French Press table view
- Set up two new prototype cells and set up IBOutlets/Actions using my SettingCell & TimingCell classes.
- The IBOutlets are connected from my FrenchPressTableViewController to my SettingCell.swift (I later reuse these outlets for my Aero settings).
My FrenchPress Settings Works Fine:
So I decided to add my Aero press settings menu using the same process:
- Create new tableView in IB
- Create a AeroPressTableViewController, and assign it to my new aero table view
- Set up two new prototype cells and assign my previously existing SettingCell & TimingCell to the proper cells.
- I utilize the outlets that I previously connected to my FrenchPressTableViewController and I connect them to my Aero controller as well to reuse the cell classes.
The final product looks like like this:
But when I run my Aero settings menu, I get the following error:
fatal error: unexpectedly found nil while unwrapping an Optional value
From what I can tell from my debugger, it looks like my SettingCell class is returning a nil value with
cell.switchLabel.text. This doesn't make sense to me since I'm trying to assign a value to it.
Clearly I'm doing something wrong, what is the proper way to reuse my UITableViewCell classes?