Re: Subclassing a View Controller in a Storyboard
Re: Subclassing a View Controller in a Storyboard
- Subject: Re: Subclassing a View Controller in a Storyboard
- From: Matt Neuburg <email@hidden>
- Date: Wed, 04 Sep 2013 07:02:26 -0700
On Sep 4, 2013, at 4:13 AM, email@hidden wrote:
> Date: Wed, 04 Sep 2013 10:23:04 +0100
> From: Dave <email@hidden>
> Subject: Subclassing a View Controller in a Storyboard
>
> Hi All,
>
> If I am using a Storyboard that contains a view controller, LTWMusicViewController that I'd like to sub-class like so:
>
> LTWRockMusicViewController : LTWMusicViewController
>
> Then in the viewDidLoad method, do:
>
> -(void) viewDidLoad
> {
> [super viewDidLoad];
>
> self.pMusicCategory = kRockMusicCategory;
> }
>
>
> ----------------------------
>
> At present LTWMusicViewController is loaded using:
>
> myViewController = [self.storyboard instantiateViewController:@"LTWMusicViewController"];
>
>
> I want LTWRockMusicViewController to use same NIB etc, as LTWMusicViewController, but just pre-set the self.pMusicCategory property to Rock.
>
> How do I do this using a Storyboard? I don't really want to copy all the controls for LTWMusicViewController into LTWMusicViewController.
What you're doing has a lot of bad smells:
* If I'm only going to call instantiateViewController, why am I using a storyboard here at all? If I use a .xib file instead, I can tell the view controller what .xib to use at its view nib, regardless of it's class.
* If the only difference between this object and that one is self.pMusicCategory, why am I bothering to subclass? Why not set the music category of the instance as soon as it is created? Gosh, if I weren't using a storyboard, I could even have a designated initializer that takes a music category as a parameter.
* Even if you must use a storyboard, you can set an arbitrary variable in the resulting instance, using the user-defined runtime attributes.
* If all else fails, implement loadView. Now finding the view is up to you. You can keep the view in a .xib file even if you are getting the view controller from a storyboard (delete the view controller's view from the storyboard to indicate that you will supply it in some other way).
m.
--
matt neuburg, phd = email@hidden, http://www.apeth.net/matt/
pantes anthropoi tou eidenai oregontai phusei
Programming iOS 6! http://shop.oreilly.com/product/0636920029717.do
RubyFrontier! http://www.apeth.com/RubyFrontierDocs/default.html
TidBITS, Mac news and reviews since 1990, http://www.tidbits.com
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden