Ios 从UIButton视图中删除“活动指示器”子视图

Ios 从UIButton视图中删除“活动指示器”子视图,ios,objective-c,uiview,uibutton,uiactivityindicatorview,Ios,Objective C,Uiview,Uibutton,Uiactivityindicatorview,我用几个按钮构建了一个界面。这些按钮从互联网上获取标题信息。我向视图中的每个按钮添加UIActivityIndicator,如下所示: - (void) addActivityIndicator { UIButton * button; for (int i = 1; i <= 10; i++){ button = (UIButton *)[self viewWithTag:i]; NSLog(@"Button: %i",i);

我用几个按钮构建了一个界面。这些按钮从互联网上获取标题信息。我向视图中的每个按钮添加UIActivityIndicator,如下所示:

- (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];
    }

}

有什么想法吗?

也许您可以尝试迭代子视图并将其删除

    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];
    }
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];

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

也许您可以尝试遍历子视图并删除它

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];

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

是的,我以前试过,但得到错误
[UIButton stop animating]:无法识别的选择器发送到实例
是。我认为存在的问题是按钮标签和指示器标签是相同的。我不这么认为,因为它们是相同的。您是否成功更改了按钮的标题?我发现,如果UIButtons的标记和UIActivityIndicatorView的标记相同,则您的方法将失败。但是,如果更改指示器视图的标记(示例标记*99),则您的方法工作正常。@@@!。无论如何,问题已经解决了。太奇怪了。是的,我以前试过,但得到错误
[UIButton stop animating]:无法识别的选择器发送到实例
是。我认为存在的问题是按钮标签和指示器标签是相同的。我不这么认为,因为它们是相同的。您是否成功更改了按钮的标题?我发现,如果UIButtons的标记和UIActivityIndicatorView的标记相同,则您的方法将失败。但是,如果更改指示器视图的标记(示例标记*99),则您的方法工作正常。@@@!。无论如何,问题已经解决了。真奇怪。
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];

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