SubClassing UILabel

subclass, uilabel

Solution

Ok. I did some further digging and in Xcode there is a field visible when looking at the nib file. Its the 'Identity Inspector' (3rd icon from left). This needed to be changed from UILabel to MyUILabel.

Now it works!

Problem

I read in this same site how to inset and UILabel (subclass UILabel and override the required methods). Before adding it to my app I decided to test it out in a standalone test app. Code is shown below. Here's MyUILabel.h ``` #import <UIKit/UIKit.h> @interface MyUILabel : UILabel @end ``` Here's MyUILabel.m ``` #import "MyUILabel.h" #import <QuartzCore/QuartzCore.h> @implementation MyUILabel - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { // Initialization code } return self; } // for border and rounding -(void) drawRect:(CGRect)rect { self.layer.cornerRadius = 4.0; self.layer.borderWidth = 2; [super drawRect:rect]; } // for inset -(void) drawTextInRect:(CGRect)rect { UIEdgeInsets insets = {0, 5, 0, 5}; [super drawTextInRect: UIEdgeInsetsInsetRect(rect, insets)]; } ``` Here's my ViewController.h ``` #import <UIKit/UIKit.h> #import "MyUILabel.h" @interface ViewController : UIViewController { MyUILabel *myDisplay; } @property (strong, nonatomic) IBOutlet MyUILabel *myDisplay; @end ``` Here's ViewController.m: ``` #import "ViewController.h" @interface ViewController () @end @implementation ViewController @synthesize myDisplay; - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. myDisplay.text = @"Hello World!"; } - (void)viewDidUnload { [self setMyDisplay:nil]; [super viewDidUnload]; // Release any retained subviews of the main view. } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); } @end ``` None of the methods in MyUILabel.m (that Im overriding) get called. Insights into why are greatly appreciated. Regards, Ramon.

Original source