Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

cpiv

macrumors newbie
Original poster
May 4, 2009
3
0
This is so damn simple im sure! Im missing something and im exhausted from trying to fix it. hopefully someone can help.

The Button in CharacterView.m works but the button nested down in CharacterMale.m does not. I'm not using IB everything is done progmatically.
What would cause one button to work and other not?

CharacterView.m is being used as a container.


PHP:
/////////////////////////////////////////////////////////////////////////////////
 CharacterController.m
/////////////////////////////////////////////////////////////////////////////////
#import "CharacterController.h"
#import "CharacterView.h"

@implementation CharacterController

- (id)init {
	NSLog(@"CharacterController init");
	self = [ super init ];
	if (self != nil) {
	}
	return self;
}

- (void)loadView {
	[ super loadView ];
	characterView = [ [ CharacterView alloc ] init];
	self.view = characterView;
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}


- (void)dealloc {
    [characterView release];
    [super dealloc];
}

@end

/////////////////////////////////////////////////////////////////////////////////
 CharacterView.m
/////////////////////////////////////////////////////////////////////////////////

#import "CharacterView.h"
#import "CharacterMale.h"

@implementation CharacterView

- (id)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {
        characterMale = [ [ CharacterMale alloc ] init];
		[self addSubview: characterMale];
		
		UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
		button.frame = CGRectMake(0, 200, 200, 100);
		[button setImage:[UIImage imageNamed:@"btnCharSelect.png"] forState:UIControlStateNormal];
		[button addTarget:self action:@selector(ApplyImage:) forControlEvents:UIControlEventTouchUpInside];
		[ self addSubview: button ];
    }
    return self;
}

- (void)drawRect:(CGRect)rect {
}

-(void)ApplyImage:(id)sender
{
	NSLog(@"CharacterView button works");
}

- (void)dealloc {
   [characterMale release];
    [super dealloc];
}

@end

/////////////////////////////////////////////////////////////////////////////////
 CharacterMale.m
/////////////////////////////////////////////////////////////////////////////////

#import "CharacterMale.h"
#import "CharacterController.h"

@implementation CharacterMale

- (id)init {
	self = [ super init];
	if (self != nil) {
		UIImage *image = [UIImage imageNamed:@"charMale.png"];
		imageView = [[ UIImageView alloc] initWithImage:image];
		[image release];
		[ self addSubview: imageView ];
		
		UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
		button.frame = CGRectMake(0, 0, 200, 100);
		[button setImage:[UIImage imageNamed:@"btnCharSelect.png"] forState:UIControlStateNormal];
		[button addTarget:self action:@selector(ApplyImage:) forControlEvents:UIControlEventTouchUpInside];
		[ self addSubview: button ];

	}
	return self;
}

-(void)ApplyImage:(id)sender
{
	NSLog(@"CharacterMal button works");
}

- (void)dealloc {
    [super dealloc];
}

@end
 

cpiv

macrumors newbie
Original poster
May 4, 2009
3
0
You should init all these views with initWithFrame and you should pass in valid frame rects.

I will do that. Is this required or just good practice? I was under the impression that instantiated classes within UIView would be initialized with its parents view port.

Either way I will try that and see if that is the answer to my annoying issue.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.