Note that there are some explanatory texts on larger screens.

plurals
  1. POMultiple rating bars with DYRateView
    primarykey
    data
    text
    <p>I have a view with 3 ratings bars on it. </p> <p>How do I tell them apart in the code? Right now if I change the top one it sees it fine but if I then change either or the other two it cannot separate them from one another.</p> <p>The code is from git <a href="https://github.com/dyang/DYRateView" rel="nofollow">https://github.com/dyang/DYRateView</a></p> <pre><code>- (void)changedToNewRate:(NSNumber *)rate { NSString *rating = [NSString stringWithFormat:@"Rate: %d", rate.intValue]; NSLog(@"rating: %@",rating); } </code></pre> <p>This is where is sees the changing. </p> <p>And this is the .m file</p> <pre><code>#import "Survey.h" @implementation Survey @synthesize btnSubmit; - (void)setUpEditableRateView { DYRateView *rateService = [[DYRateView alloc] initWithFrame:CGRectMake(0, 55, self.view.bounds.size.width, 40) fullStar:[UIImage imageNamed:@"StarFullLarge@2x.png"] emptyStar:[UIImage imageNamed:@"StarEmptyLarge@2x.png"]]; rateService.padding = 20; rateService.alignment = RateViewAlignmentCenter; rateService.editable = YES; rateService.delegate =self; [scroller addSubview:rateService]; [rateService release]; DYRateView *rateFood = [[DYRateView alloc] initWithFrame:CGRectMake(0, 130, self.view.bounds.size.width, 40) fullStar:[UIImage imageNamed:@"StarFullLarge@2x.png"] emptyStar:[UIImage imageNamed:@"StarEmptyLarge@2x.png"]]; rateFood.padding = 20; rateFood.alignment = RateViewAlignmentCenter; rateFood.editable = YES; rateFood.delegate = self; [scroller addSubview:rateFood]; [rateFood release]; DYRateView *rateCleanliness = [[DYRateView alloc] initWithFrame:CGRectMake(0, 200, self.view.bounds.size.width, 40) fullStar:[UIImage imageNamed:@"StarFullLarge@2x.png"] emptyStar:[UIImage imageNamed:@"StarEmptyLarge@2x.png"]]; rateCleanliness.padding = 20; rateCleanliness.alignment = RateViewAlignmentCenter; rateCleanliness.editable = YES; rateCleanliness.delegate = self; [scroller addSubview:rateCleanliness]; [rateCleanliness release]; } - (BOOL)textFieldShouldReturn:(UITextField *)textField { [textField resignFirstResponder]; return YES; } - (void)changedToNewRate:(NSNumber *)rate { NSString *rating = [NSString stringWithFormat:@"Rate: %d", rate.intValue]; NSLog(@"rating: %@",rating); } - (IBAction)btnSubmit:(id)sender{ } -(IBAction)mainMenu{ [self dismissModalViewControllerAnimated:YES]; } - (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. } #pragma mark - View lifecycle - (void)viewDidLoad { [super viewDidLoad]; [scroller setScrollEnabled:YES]; [scroller setContentSize:CGSizeMake(320, 600)]; scroller.BackgroundColor = [UIColor clearColor]; [self setUpEditableRateView]; [btnSubmit useGreenConfirmStyle]; } - (void)viewDidUnload { [super viewDidUnload]; // Release any retained subviews of the main view. // e.g. self.myOutlet = nil; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { // Return YES for supported orientations return (interfaceOrientation == UIInterfaceOrientationPortrait); } @end </code></pre> <p><strong>UPDATE</strong></p> <p>ok with the new code I added an if statement</p> <pre><code>- (void)rateView:(DYRateView *)rateView changedToNewRate:(NSNumber *)rate { NSString *barName = [NSString stringWithFormat:@"%@", rateView]; if (barName == @"rateView1") { NSString *bar1 = [NSString stringWithFormat:@"Rate: %d", rate.intValue]; NSLog(@"bar 1: %@",bar1); }else if(barName == @"rateView2"){ NSString *bar2 = [NSString stringWithFormat:@"Rate: %d", rate.intValue]; NSLog(@"bar 2: %@",bar2); }else{ NSLog(@"NO BAR: %@",barName); } self.rateLabel.text = [NSString stringWithFormat:@"Rate: %d", rate.intValue]; } </code></pre> <p>It works however Instead of getting back "rateView1" or 2 or 3. I get back </p> <pre><code> NO BAR: &lt;DYRateView: 0x78229b0; frame = (0 40; 320 20); opaque = NO; layer = &lt;CALayer:0x7824900&gt;&gt; </code></pre> <p>Which is correct in nature but I was hoping for the name of the rateView such as "rateView1"</p> <p><strong>SOLUTION:</strong></p> <p>in .h file @property your 2 or 3 bars</p> <pre><code>@property(nonatomic, retain) DYRateView *rateView1,*rateView2; </code></pre> <p>in .m @synthesize them</p> <pre><code>@synthesize rateView1; @synthesize rateView2; </code></pre> <p>then</p> <pre><code>(void)setUpEditableRateView { rateView1 = [[DYRateView alloc] initWithFrame:CGRectMake(0, 40, self.view.bounds.size.width, 20) fullStar:[UIImage imageNamed:@"StarFullLarge.png"] emptyStar:[UIImage imageNamed:@"StarEmptyLarge.png"]]; rateView1.padding = 20; rateView1.alignment = RateViewAlignmentCenter; rateView1.editable = YES; rateView1.delegate = self; [self.view addSubview:rateView1]; [rateView1 release]; rateView2 = [[DYRateView alloc] initWithFrame:CGRectMake(0, 100, self.view.bounds.size.width, 20) fullStar:[UIImage imageNamed:@"StarFullLarge.png"] emptyStar:[UIImage imageNamed:@"StarEmptyLarge.png"]]; rateView2.padding = 20; rateView2.alignment = RateViewAlignmentCenter; rateView2.editable = YES; rateView2.delegate = self; [self.view addSubview:rateView2]; [rateView2 release]; // Set up a label view to display rate self.rateLabel = [[[UILabel alloc] initWithFrame:CGRectMake(0, 80, self.view.bounds.size.width, 20)] autorelease]; self.rateLabel.textAlignment = UITextAlignmentCenter; self.rateLabel.text = @"Tap above to rate"; [self.view addSubview:self.rateLabel]; } </code></pre> <p>Then Finally </p> <pre><code>- (void)rateView:(DYRateView *)rateView changedToNewRate:(NSNumber *)rate { if (rateView == rateView1) { NSString *bar1 = [NSString stringWithFormat:@"Rate: %d", rate.intValue]; NSLog(@"bar 1: %@",bar1); }else if(rateView == rateView2){ NSString *bar2 = [NSString stringWithFormat:@"Rate: %d", rate.intValue]; NSLog(@"bar 2: %@",bar2); }else{ NSLog(@"NO BAR: %@",rateView); } self.rateLabel.text = [NSString stringWithFormat:@"Rate: %d", rate.intValue]; } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload