所以我做了the Ray Wenderlich教程的5星评论视图,只是我修改了它来做半星评级。
看起来它工作得很好但事实证明,自定义UIView并不总是更新评级值改变的UITableView。
我添加了一个NSLog()来显示自定义类中的评级值,然后添加一个标签来输出TableView中的值。看起来,它需要一个非常刻意的点击拖动停止提升手指动作来让它更新TableView值。有什么想法吗??以下是一些代码snipets:
修改后的“处理触摸”
(void)handleTouchAtLocation:(CGPoint)touchLocation {
if (!self.editable) return;
float newRating = 0;
for(int i = self.imageViews.count - 1; i >= 0; i--) {
UIImageView *imageView = [self.imageViews objectAtIndex:i];
CGFloat distance = touchLocation.x - imageView.frame.origin.x;
if (distance <= 0) continue;
if (distance < imageView.frame.size.width / 2) {
newRating = i + 0.5;
break;
} else if (distance > imageView.frame.size.width / 2){
newRating = i + 1;
break;
}
}
self.rating = newRating;
NSLog(@"Self.rating = %f", self.rating);
}
我的tableView .h / .m文件的细分
我的.h
@property (weak, nonatomic) IBOutlet RateView *queenRateView;
我的.m
//Queen Performance Rating
self.queenRateView.rating = 0;
self.queenRateView.editable = YES;
self.queenRateView.maxRating = 5;
self.queenRateView.delegate = self;
- (void)rateView:(RateView *)rateView ratingDidChange:(float)rating {
NSLog(@"Queen Rating from Class: %f", rating);
queenRating = [NSNumber numberWithFloat: rating];
NSLog(@"Queen Rating: %@", queenRating);
self.queenRatingLabel.text = [NSString stringWithFormat:@"%@", queenRating];
}
答案 0 :(得分:0)
我认为你弄乱了这一部分: