I will attempt to answer the questions. You might think the terminology is splitting hairs but it is important to understand how everything fits together.
> 1. So create a class, Options, with a string, color.
Yes. That class defines your model, so it should have whatever properties are necessary. In your case the class should probably fully describe the query parameters.
> 2. Add the class to the parent AND child view controllers .m files and in the .h files of each,
You are not adding the the class to the view controllers, you are adding a property that references an instance of the class. The class is defined in Options.h/m. There should only be one instance of the class. You are adding this property so that class instance is easily accessible from within the view controllers.
> 3... (What is the setOptions:options?)
This sets the options property on the destination view controller to the same options as the parent. The child view controller did not exist until the segue started; prepareForSegue is your opportunity to set properties on the destination view controller that are not immediately accessible inside the view controller.
setOptions is the synthesized accessor for the options property. I used setOptions:options rather than than .options = options because the latter would require casting destinationViewController. There is no functional difference.
> With the child vc setting the model properties section you have above, that will grab the value of the check box and store it in the color string?
Yes. There is only one instance of the Options class.
> Is availableColors my array on the child vc or am I way off?
Yes. For this test, that is just an array of color names corresponding with table row indexes so I didn't have to put a switch or a bunch of else if's and explicitly set it for each table row index. Your solution needs some similar way to map the checked table row to the associated option.
> and then create the final (void) function in my parent .m file??
That is a UINavigationControllerDelegate method. You need to make sure the UINavigationController delegate is set to the view controller, and the view controller class is marked with that protocol. If you don't know how delegates/protocols work, read the Objective-C Programming Guide or review a few of the sample apps. You can't get much done in iOS apps without using delegates.
> I don't understand the syntax you have for: colorCellLabel.text = options.color ? options.color : @"not set";
Before option.color is set for the first time, it is nil. This immediate ifstatement shows "not set" in the table cell in that scenario. Same as a regular if/else statement but more concise.
The view controllers in this sample project storyboard have static cells, so there isn't much code other than that above. I don't think we can post attachments. To better understand how everything fits together, I can send you the entire project late tonight (EDT) if you post an email address.