Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trial
Rodrigo Chousal
16,009 PointsLabel not randomising, stays the same
I am currently working on the Crystal Ball project. As I was trying to find a way to change the font size and name, something went wrong and now the label doesn't randomise. I couldn't find what was wrong. Any ideas? Amit Bijlani ? Stone Preston ?
Rodrigo Chousal
16,009 PointsRCViewController.m:
#import "RCViewController.h"
#import "RCCrystalBall.h"
@interface RCViewController ()
@end
@implementation RCViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.crystalBall = [[RCCrystalBall alloc] init];
self.backgroundImageView.animationImages = [[NSArray alloc] initWithObjects:
[UIImage imageNamed:@"CB00001"],
[UIImage imageNamed:@"CB00002"],
[UIImage imageNamed:@"CB00003"],
[UIImage imageNamed:@"CB00004"],
[UIImage imageNamed:@"CB00005"],
[UIImage imageNamed:@"CB00006"],
[UIImage imageNamed:@"CB00007"],
[UIImage imageNamed:@"CB00008"],
[UIImage imageNamed:@"CB00009"],
[UIImage imageNamed:@"CB00010"],
[UIImage imageNamed:@"CB00011"],
[UIImage imageNamed:@"CB00012"],
[UIImage imageNamed:@"CB00013"],
[UIImage imageNamed:@"CB00014"],
[UIImage imageNamed:@"CB00015"],
[UIImage imageNamed:@"CB00016"],
[UIImage imageNamed:@"CB00017"],
[UIImage imageNamed:@"CB00018"],
[UIImage imageNamed:@"CB00019"],
[UIImage imageNamed:@"CB00020"],
[UIImage imageNamed:@"CB00021"],
[UIImage imageNamed:@"CB00022"],
[UIImage imageNamed:@"CB00023"],
[UIImage imageNamed:@"CB00024"],
[UIImage imageNamed:@"CB00025"],
[UIImage imageNamed:@"CB00026"],
[UIImage imageNamed:@"CB00027"],
[UIImage imageNamed:@"CB00028"],
[UIImage imageNamed:@"CB00029"],
[UIImage imageNamed:@"CB00030"],
[UIImage imageNamed:@"CB00031"],
[UIImage imageNamed:@"CB00032"],
[UIImage imageNamed:@"CB00033"],
[UIImage imageNamed:@"CB00034"],
[UIImage imageNamed:@"CB00035"],
[UIImage imageNamed:@"CB00036"],
[UIImage imageNamed:@"CB00037"],
[UIImage imageNamed:@"CB00038"],
[UIImage imageNamed:@"CB00039"],
[UIImage imageNamed:@"CB00040"],
[UIImage imageNamed:@"CB00041"],
[UIImage imageNamed:@"CB00042"],
[UIImage imageNamed:@"CB00043"],
[UIImage imageNamed:@"CB00044"],
[UIImage imageNamed:@"CB00045"],
[UIImage imageNamed:@"CB00046"],
[UIImage imageNamed:@"CB00047"],
[UIImage imageNamed:@"CB00048"],
[UIImage imageNamed:@"CB00049"],
[UIImage imageNamed:@"CB00050"],
[UIImage imageNamed:@"CB00051"],
[UIImage imageNamed:@"CB00052"],
[UIImage imageNamed:@"CB00053"],
[UIImage imageNamed:@"CB00054"],
[UIImage imageNamed:@"CB00055"],
[UIImage imageNamed:@"CB00056"],
[UIImage imageNamed:@"CB00057"],
[UIImage imageNamed:@"CB00058"],
[UIImage imageNamed:@"CB00059"],
[UIImage imageNamed:@"CB00060"], nil];
self.backgroundImageView.animationDuration = 2.5f;
self.backgroundImageView.animationRepeatCount = 1;
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark - Randomization
- (void) makePrediction {
self.predictionLabel.text = [self.crystalBall randomPrediction];
self.predictionLabel.textColor = [self.crystalBall randomColors];
[self.backgroundImageView startAnimating];
}
#pragma mark - Motion Events
- (void) motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event {
self.predictionLabel.text = nil;
NSLog(@"Motion Began");
}
- (void) motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {
if ( motion == UIEventSubtypeMotionShake ) {
[self makePrediction];
}
NSLog(@"Motion Ended");
}
- (void) motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event {
NSLog(@"Motion Cancelled");
}
#pragma mark - Touch Events
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
self.predictionLabel = nil;
NSLog(@"Touches Began");
}
- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
[self makePrediction];
NSLog(@"Touches Ended");
}
- (void) touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"Touches Cancelled");
}
@end
´´´
Rodrigo Chousal
16,009 PointsRCCrystalBall.h:
#import <Foundation/Foundation.h>
@interface RCCrystalBall : NSObject{
NSArray *_predictions;
}
@property (strong, nonatomic, readonly) NSArray *predictions;
@property (strong, nonatomic) NSArray *colors;
- (NSString *) randomPrediction;
- (UIColor *) randomColors;
@end
Rodrigo Chousal
16,009 PointsRCCrystalBall.m:
#import "RCCrystalBall.h"
@implementation RCCrystalBall
- (NSArray *) predictions {
if (_predictions == nil) {
_predictions = [[NSArray alloc] initWithObjects:@"It is certain", @"It is decidedly so", @"All signs say yes", @"The stars are not aligned", @"My reply is no", @"It is doubtful", @"Better not tell you now", @"Concentrate and ask again", @"Unable to answer now", @"Just do it", @"You will endure", @"All signs say no", @"The stars are aligned", @"My reply is yes", @"It is uncertain", @"Better tell you now", @"Don't do it", @"You will not endure", nil];
}
return _predictions;
}
- (NSString *) randomPrediction {
int random = arc4random_uniform(self.predictions.count);
return [self.predictions objectAtIndex:random];
}
- (NSArray *) colors {
if (_colors == nil) {
_colors = [[NSArray alloc] initWithObjects:[UIColor blackColor], [UIColor darkGrayColor], [UIColor lightGrayColor], [UIColor whiteColor], [UIColor grayColor], [UIColor redColor], [UIColor greenColor], [UIColor blueColor], [UIColor cyanColor], [UIColor yellowColor], [UIColor magentaColor], [UIColor orangeColor], [UIColor purpleColor], [UIColor brownColor], nil];
}
return _colors;
}
- (UIColor *) randomColors {
int randomColor = arc4random_uniform(self.colors.count);
return [self.colors objectAtIndex:randomColor];
}
@end
´´´
2 Answers
Stone Preston
42,016 PointsRodrigo Chousal, easy fix. you used the following code in your touchesBegan method of your view controller
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
self.predictionLabel = nil;
NSLog(@"Touches Began");
}
you set the label to nil, but you need to set the TEXT of the label to nil
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
self.predictionLabel.text = nil;
NSLog(@"Touches Began");
}
Rodrigo Chousal
16,009 PointsThank you!
Stone Preston
42,016 Pointscan you zip up your entire project folder (the folder you need to compress is the one that has your .xcodeproject file inside of it) and upload it to dropbox. nothing really looks wrong with the code you posted, but I can take a better look If I have the actual project
Rodrigo Chousal
16,009 PointsRodrigo Chousal
16,009 PointsAny luck?
Stone Preston
42,016 PointsRodrigo Chousal I need the whole folder that contains the .xcodeproj file. so if your CrystallBall.xcodeproj file is located inside a folder called Crystal Ball, I need to zip up the Crystal Ball folder, not just the .xcodeproj file itself. I need everything else in that folder as well
Rodrigo Chousal
16,009 PointsSorry! Here it is: https://www.dropbox.com/s/sfa5v5wwjmkza32/CrystalBall.zip
Rodrigo Chousal
16,009 PointsRodrigo Chousal
16,009 PointsRCViewController.h: