2015-11-13 77 views
1

我用几个按钮构建了一个界面。这些按钮可以从互联网上获取他们的标题信息。我一UIActivityIndi​​cator在视图中添加到每个按钮像这样:从UIButton视图删除活动指标子视图

- (void) addActivityIndicator { 
    UIButton * button; 

    for (int i = 1; i <= 10; i++){ 
     button = (UIButton *)[self viewWithTag:i]; 
     NSLog(@"Button: %i",i); 
     [button setTitle:@"" forState:UIControlStateNormal]; 
     button.enabled = NO; 

     UIActivityIndicatorView * buttonSpinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 
     [buttonSpinner startAnimating]; 
     buttonSpinner.tag = i; 
     buttonSpinner.frame = button.bounds; 
     [button addSubview:buttonSpinner]; 
    } 

} 

不过,我似乎无法访问个别指标将其删除。

[(UIButton *)[self viewWithTag:tag] setTitle:[NSString stringWithFormat:@"%@",[self addTitle:i]] forState:UIControlStateNormal]; 
[(UIButton *)[self viewWithTag:tag] setEnabled:YES]; 
[(UIButton *)[self viewWithTag:tag] [buttonSpinner stopAnimating]]; 

有什么想法?

回答

1
for (int i = 1; i <= 10; i++){ 
     button = (UIButton *)[self viewWithTag:i]; 
     NSLog(@"Button: %i",i); 
     [button setTitle:@"" forState:UIControlStateNormal]; 
     button.enabled = NO; 

     UIActivityIndicatorView * buttonSpinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 
     [buttonSpinner startAnimating]; 
     buttonSpinner.tag = i*99; 
     buttonSpinner.frame = button.bounds; 
     [button addSubview:buttonSpinner]; 
    } 

然后,得到UIActivityIndicatorView

[(UIActivityIndicatorView *)[(UIButton *)[self viewWithTag:tag] viewWithTag:tag] stopAnimating]; 
+0

是的,我试过,但之前得到的错误'[UIButton的stopAnimating]:无法识别的选择发送到instance' –

+0

你试过像我的答案是什么呢? – anhtu

+0

是的。我认为问题在于按钮标签和指示标签是相同的。 –

-1

也许你可以尝试通过迭代子视图和删除呢?

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 

UIActivityIndicatorView *toRemove; 
for (UIView *view in button.subviews) 
{ 
    if ([view isKindOfClass:[UIActivityIndicatorView class]]) 
    { 
     toRemove = (UIActivityIndicatorView *)view; 
     break; 
    } 
} 
[toRemove removeFromSuperview];