我正在尝试在我的UITableView中的某些单元格中添加一个活动指示器.我在方法didSelectRowAtIndexpath中成功地使用了
CGRect CellFrame = CGRectMake(260, 10, 20, 20);
actindicator = [[UIActivityIndicatorView alloc]initWithFrame:CellFrame];
[actindicator setHidesWhenStopped:NO];
[actindicator setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleGray];
actindicator.tag =1;
[[cell contentView] addSubview:actindicator];
Run Code Online (Sandbox Code Playgroud)
我需要从另一种方法控制这些多个活动指标.我认为一个属性是一种方法来做到这一点,但每次初始化一个新的actIndicator实例,我将参考文献除了活动指示符的"最新"初始化之外的所有内容,因此意味着我只能控制一个.
我需要做什么(如果可能的话?)来保持对所有actIndicators的引用,这样我就可以开始动画所有这些了吗?或者我可以以某种方式使用actindicator.tag来控制某种形式的引用.
非常感谢任何帮助.
编辑:(来自答案)访问tableView中标记为1的所有活动实例指标(仅限可见单元格)可以使用下面的另一种方法:
for (UITableViewCell *cell in [self.tableView visibleCells]) {
UIActivityIndicatorView *actView = (UIActivityIndicatorView *)[cell.contentView
viewWithTag:1];
[actView startAnimating];
activityFlag = 1;
}
Run Code Online (Sandbox Code Playgroud)
上述方法将遍历所有可见单元格并开始为活动指示器设置动画.
为了处理滚动的tableview的情况,我使用下面的方法重新设置指标的动画,该方法位于cellForRowAtIndexPath中.cellStateKey只是指示单元格旁边是否有复选标记,如果它有复选标记并且我的activityflag(正在进行异步网络服务器调用)已设置..那我想继续设置动画.(技术上重新启动动画,作为滚动tableview停止它)
if ([[rowData objectForKey:cellStateKey] boolValue]) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
if(cell.accessoryType == UITableViewCellAccessoryCheckmark &&activityFlag ==1){
for (UIView *sub in [[cell contentView] subviews]) {
if (sub.tag == 1) {
UIActivityIndicatorView *acView = (UIActivityIndicatorView *)
[cell.contentView viewWithTag:1]; …Run Code Online (Sandbox Code Playgroud)