Ok ok I know this should be easy but .. I just can't get it to work
basically passing an array of NSValues up several Objects..
I have several objects. let's say.
FooView
FooCard
FooRow
Foo
in Foo.h
in Foo.m
ok in FooRow.h
now FooRow.m
getting there. Now FooCard.h
FooCard.m
Finally FooView.h
FooView.m
I get values of "index:0 x=0 y=0" ... seven times.. of course what I want is co-ordinates..
basically passing an array of NSValues up several Objects..
I have several objects. let's say.
FooView
FooCard
FooRow
Foo
in Foo.h
Code:
@interface foo : NSObject {
NSValue *kungFoo; // a NSValue holding a CGPoint //
NSInteger someFoo;
NSString *fooString;
@property (nonatomic,retain) NSValue *kungFoo;
@property (nonatomic) NSInteger someFoo;
@property (nonatomic,retain) NSString *fooString;
in Foo.m
Code:
@implementation Foo
@synthesize kungFoo,someFoo,fooString;
-(id)init
{
fooString = [[NSString alloc]init];
kungFoo = [[NSValue alloc] init];
return self;
}
-(id) initFooWithPos: (NSValue *)position fooName:(NSString *)stringy fooValue:(NSInteger) valeww
{
kungFoo = position;
fooString = stringy;
someFoo = valeww;
return self;
}
Code:
// blah blah.. @interface FooRow: NSObject{
NSMutableArray * arrayOfFoo;
}
@property (nonatomic, retain) NSMutableArray *arrayOfFoo;
now FooRow.m
Code:
#import "FooRow.h"
#import "Foo.h"
-(id)init{
arrayOfFoo = [[NSMutableArray alloc]init];
return self;
}
-(id)initFooRowWith:(NSInteger)numberOfFoosRows
{
int numberOfFooRows = 7;
Foo *newFoo = [[Foo alloc] init];
for(int i = numberOfFoosRows; i>0;i--) {
CGPoint myFooPoint;
myFooPoint =CGPointMake(((numberOfFoo-i)*10), 45);
NSValue *tempFoo = [NSValue valueWithCGPoint:myFooPoint);
[tempFoo initFooWithPos: tempFoo fooName:@"test123" fooValue:12];
[arrayOfFoo addObject:tempFoo];
[tempFoo release];
}
return self;
}
getting there. Now FooCard.h
Code:
// @interface FooCard: NSObject {
NSMutableArray *fooRowArray;
UIImage *fooImage;
}
// and the appropriate property stuff //
FooCard.m
Code:
#import "FooCard.h"
#import "FooRow.h"
// implementation and synthesize stuff...//
-(id) init{
fooRowArray = [[NSMutableArray alloc]init];
fooImage = [[UIImage alloc]init];
return self;
}
-(id)initWithFooCardWith:(NSInterger )numberOfRows{
for (int i=numberOfRows;i>0; i--)
{
NSLog(@" creating row:%i",(numberOfRows-i));
FooRow *newRow =[[FooRow alloc] initFooRowWith:7];
[fooRowArray addObject:newRow];
[newRow release];
}
[self setFooImage:[UIImage imageNamed:@"fooImagePicture.png"]];
returns self;
}
Finally FooView.h
Code:
#import <UIKit/UIKit.h>
#import "FooCard.h"
#import "FooRow.h"
#import "Foo.h"
@interface FooView : UIView {
FooCard *currentCard;
}
@property (nonatomic,retain) FooCard *currentCard;
- (void)drawAFooCard:(FooCard *)cardToDraw;
@end
Code:
- (void)drawAFooCard:(FooCard *)cardToDraw
{
currentFooCard = [[[Card alloc]init]retain];
currentFooCard.fooImage = [[UIImage alloc] init];
NSLog(@"using DrawCard function");
currentCard = cardToDraw;
[self setNeedsLayout];
}
- (void)drawRect:(CGRect)rect {
// Drawing code.
CGRect bounds = [self bounds];
CGPoint topLeftCorner;
CGPoint centre;
topLeftCorner.x = bounds.origin.x + bounds.size.width * 0.10; // in percentage of screen size //
topLeftCorner.y = bounds.origin.y + bounds.size.height * 0.10; // in percentage of the screen size //
centre.x = bounds.origin.x + bounds.size.width / 2; // in percentage of screen size //
centre.y = bounds.origin.y + bounds.size.height/ 2; // in percentage of the screen size //
UIImageView *fooBackground = [[[UIImageView alloc]
initWithImage:[[currentFooCard fooImage]
stretchableImageWithLeftCapWidth:0.0
topCapHeight:0.0]]retain];
[cardBackground setFrame:CGRectMake(0, 0,bounds.size.width,bounds.size.height)];
[cardBackground setAlpha:1.0];
[self addSubview:cardBackground];
[self sendSubviewToBack:cardBackground];
[cardBackground release];
// ****** the above stuff works perfectly the image appears etc **** but !!! //
UIImage* uiimag = [UIImage imageNamed:@"YellowBlob.png"];
UIGraphicsBeginImageContext(mysize);
CGPoint fooPost;
// I was trying anything to get it to work here //
NSInteger currentRow = 0; // for testing sake //
FooRow *fooRowCurrent = [[FooRow alloc] init];
Foo *currentFoo = [[Foo alloc] init];
cardRowCurrent.arrayStamps = [[NSMutableArray alloc] init];
fooRowCurrent = [currentFooCard fooRowArray] objectAtIndex:currentRow];
NSValue *convertValue = [[NSValue alloc]init];
for (int i=7; i>0; i--) {
currentFoo = [[fooRowCurrent fooArray] objectAtIndex:(7-i)];
convertValue = [currentFoo fooPos];
fooPost =[convertValue CGPointValue];
NSLog(@"index: %i x=%f y=%f",(7-i),fooPost.x.,fooPost.y);
// cod for putting graphics down .. etc//
}
I get values of "index:0 x=0 y=0" ... seven times.. of course what I want is co-ordinates..
Code:
index: 0 x=0 y=45
index: 1 x=10 y=45
index: 2 x=20 y=45
index: 3 x=30 y=45
index: 4 x=40 y=45
ect.
Last edited: