5 星评级不会通知 UITableView 更新值;自定义 UIView 类的作品
Posted
技术标签:
【中文标题】5 星评级不会通知 UITableView 更新值;自定义 UIView 类的作品【英文标题】:5-star rating doesn't inform UITableView of updated value; custom UIView class works 【发布时间】:2015-01-30 01:45:17 【问题描述】:所以我做了the Ray Wenderlich 教程以获得 5 星评论视图,只是我修改它以进行半星评级。
看起来它工作得很好,但事实证明,自定义 UIView 并不总是更新评级值发生变化的 UITableView。
我添加了一个 NSLog() 来显示自定义类中的评分值,然后添加了一个标签来输出 TableView 中的值。看起来,它需要一个非常刻意的点击-拖动-停止-抬起手指动作来让它更新 TableView 值。有什么想法吗??以下是一些代码片段:
修改了“手柄触摸”
(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];
【问题讨论】:
【参考方案1】:我认为你搞砸了这部分:
(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event [self.delegate rateView:self ratingDidChange:self.rating];【讨论】:
以上是关于5 星评级不会通知 UITableView 更新值;自定义 UIView 类的作品的主要内容,如果未能解决你的问题,请参考以下文章