Hi !
I'm trying to get a random line from a plist, and present it to a picker when pressing a "spin-button".
What am I missing ? When running the app, it crash with the following error;"
[NSCFString superview]: unrecognized selector sent to instance".
The code:
-------------
The .h -file
-------------
Code:
#import <UIKit/UIKit.h>
@interface jhaGameViewController : UIViewController
<UIPickerViewDataSource, UIPickerViewDelegate> {
UIPickerView *picker;
NSArray *column1;
UIButton *spin;
NSMutableArray *ViewArray;
}
@property(nonatomic, retain) IBOutlet UIPickerView *picker;
@property(nonatomic, retain) NSArray *column1;
@property(nonatomic, retain) NSMutableArray *ViewArray;
- (IBAction)spin;
@end
--------------
The .m -file:
--------------
Code:
#import "jhaGameViewController.h"
@implementation jhaGameViewController
@synthesize picker;
@synthesize column1;
@synthesize ViewArray;
- (IBAction)spin {
int lastVal = -1;
for (int i = 0; i < 1; i++) {
int newValue = random() % [self.column1 count];
if (newValue == lastVal)
lastVal = newValue;
[picker selectRow:newValue inComponent:i animated:YES];
[picker reloadComponent:i];
}
}
- (void)viewDidLoad {
for (int i = 1; i <= 5; i++) {
NSString *qpath = [[NSBundle mainBundle] pathForResource:@"jhaList" ofType:@"plist"];
ViewArray = [[NSMutableArray alloc] initWithContentsOfFile:qpath];
NSString *fieldName =
[[NSString alloc] initWithFormat:@"column1", i];
[self setValue:ViewArray forKey:fieldName];
[fieldName release];
[ViewArray release];
}
srandom(time(NULL));
}
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc. that aren't in use.
}
- (void)viewDidUnload {
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
self.picker = nil;
self.column1 = nil;
self.ViewArray = nil;
}
- (void)dealloc {
[picker release];
[column1 release];
[ViewArray release];
[super dealloc];
}
#pragma mark -
#pragma mark Picker Data Source Methods
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component {
return [self.column1 count];
}
#pragma mark Picker Delegate Methods
- (UIView *)pickerView:(UIPickerView *)pickerView
viewForRow:(NSInteger)row
forComponent:(NSInteger)component reusingView:(UIView *)view {
NSString *arrayName = [[NSString alloc] initWithFormat:@"column1",
component+1];
NSArray *array = [self valueForKey:arrayName];
[arrayName release];
return [array objectAtIndex:row];
}
@end
I'm a newbie, so I'll apriciate all help I can get !
//J-E