【问题标题】:Remove Activity Indicator subview from UIButton view从 UIButton 视图中删除 Activity Indicator 子视图
【发布时间】:2015-11-13 17:15:41
【问题描述】:

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

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

有什么想法吗?

【问题讨论】:

    标签: ios objective-c uiview uibutton uiactivityindicatorview


    【解决方案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];
    

    【讨论】:

    • 是的,我之前尝试过,但收到错误[UIButton stopAnimating]: unrecognized selector sent to instance
    • 是的。我认为存在按钮标签和指示器标签相同的问题。
    • 我不认为因为它们是相同的。您是否成功更改了按钮的标题?
    • 我发现如果UIButtons的标签和UIActivityIndi​​catorView的标签是一样的,你的方法就失败了。但是,如果更改指示器视图的标记(示例标记*99),那么您的方法可以正常工作。
    • @@!。无论如何,问题已解决。太奇怪了。
    【解决方案2】:

    也许您可以尝试遍历子视图并将其删除?

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

    【讨论】:

      猜你喜欢
      • 2011-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多