I needed to be able to change the colour of my entire interface when the user tapped a button. My first design consisted of a series of labels that were easily referenced by outlets. Later I decided a Table View was a better fit – but how to retrospectively update the colours of the table cells?
Easy, I thought. I added an array of UITableViewCell to my ViewController class.
var theCells : [UITableViewCell]?
It had to be optional, I thought, because I could only add the cells as the table view was built thusly in my cellForRowAtIndexPath method.
cellRefs.append(cell) return cell
The problem was when I later went to reference the array… it was nil! Crash!
After some noodling I suddenly got to thinking – what does .append( ) actually do for an array that doesn’t actually exist yet? Certainly it didn’t throw an error, but neither did it seem to add any elements. It kind of made sense – the array doesn’t exist yet, what do I append to?
Instead of an optional array, an empty array initialised right there in the declaration, thus avoiding the need to override init( ).
var cellRefs : [UITableViewCell] = 
Now the .append( ) does what I expect, the array is populated and a tap of my finger changes all the colours. Yay!
- A saying my father used seems once again appropriate at this juncture — “Road signs are put up by people who know where they’re going.”