jwknz
jwknz

Reputation: 6822

IOS - The correct way for using #import classes

I am writing a test project to learn to write everything in code. I want to do this way so that I can better understand what the Elements in Storyboard do for me behind the scene's

In my project I have several UIViewControllers which share the same UI elements. For Example I have a UITool bar at the top of the screen with several buttons in it.

Now I want to put that UIToolbar in a separate class so that I do not have to write it all out or copy n paste it in every controller.

Now I know I can achieve this by doing this:

#import "General_Add_ons.h" //the UIToolbar is properly set up in this file

@interface FirstViewController : General_Add_ons  

and then I just use [self topToolBar]; //topToolBar is the name of the toolbar

Now I just want to clarify is this the best and or only way to this?

Somehow I feel I should be able to do this:

    General_Add_ons *gao = [[General_Add_ons alloc] init];
    [gao topToolbar];

Am I thinking about this the wrong way? The first way seems to be limiting in case I have multiple external classes.

Thanks in advance.

Upvotes: 0

Views: 268

Answers (2)

FluffulousChimp
FluffulousChimp

Reputation: 9185

Your approach seem correct. If you have several UIViewController instances that need the same UI elements or other controller code, you can put those elements in a UIViewController subclass. In your case, I believe the class General_Add_ons is the UIViewController from which your subclasses will inherit.

This class (your General_add_ons) should have a property for the reusable toolbar, e.g.

@property (nonatomic, strong) UIToolbar *toolbar;

As an aside, class names in Cocoa, by convention are: prefix+capitalized words without underscores. Apple has a great reference on naming conventions.

EDIT

For clarification, you can subclass your custom subclass as many times as you need. For example in my code, I have a class CCFViewController that encapsulates common properties and behaviors that I want all of my view controllers to have. In the project, then, all of the view controllers inherit from that parent controller. Similarly, your toolbar will live in the superclass and the other controllers inherit from it.

Upvotes: 1

Microns
Microns

Reputation: 361

I am not 100% sure but i think you should try it this way:

General_Add_ons *gao = [[General_Add_ons alloc] init];
[gao.topToolbar anypossiblemethodcall];

Upvotes: 0

Related Questions