如何停止UIActivityIndicatorView?此代码不起作用。
BubbleTableViewCell.h:
@interface BubbleTableViewCell : UITableViewCell {
UIActivityIndicatorView *activity;
}
BubbleTableViewCell.m:
- (void)setActivity:(BOOL)value {
if (value) {
activity = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
activity.center = CGPointMake(15, 15);
[activity startAnimating];
[self.contentView addSubview:activity];
}
else {
[activity stopAnimating];
[activity removeFromSuperview];
[activity release];
}
}
答案 0 :(得分:0)
我只能假设您需要活动指示符的位置和原因,但如果您在加载数据时需要它,则可以这样做:
- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell * cell;
MyCustomCell * myCell = [TableViewCellsFactory loadCellFromNibWithName:@"myCell" identifier:@"myCell" tableView:aTableView owner:self];
if(dataIsLoading) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"loadingCell"] autorelease];
UIActivityIndicatorView * activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
[activityIndicator startAnimating];
[activityIndicator setFrame:CGRectMake(140, 40, 40, 40)];
[cell addSubview:activityIndicator];
}
else {
//here you customize myCell
cell = myCell;
}
return cell;
这对我来说非常适合....
答案 1 :(得分:0)
在这两种情况下只需调试值的状态。我认为BOOL值一旦设置为true,则不会更改为false以执行其他部分。
答案 2 :(得分:0)
您是否将活动设置了两次? 如果您使用相同的BOOL值调用此函数两次
,则可能会丢失参考答案 3 :(得分:0)
假设您想在UITableViewCell中显示活动指示器,而某些数据(如图像)被下载,一旦下载完毕,您就想要停止指示器。在tableView:cellForRowAtIndexPath:
方法中执行此操作的一种方法是:
setActivity:
调用方法NO
。
setActivity:
调用方法YES
,然后开始下载相应的数据。
- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation
重新加载特定单元格
tableView:cellForRowAtIndexPath:
时,将下载该行的数据,并在参数中使用setActivity:
调用方法 NO
,这将隐藏指标(如果有的话)。
使用这种方法你必须稍微修改一下这个函数:
- (void)setActivity:(BOOL)value
{
if (value)
{
activity = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
activity.center = CGPointMake(15, 15);
[activity startAnimating];
[self.contentView addSubview:activity];
}
else
{
if(activity)
{
[activity stopAnimating];
[activity removeFromSuperview];
[activity release];
}
}
}