如何从ios中的类方法中删除子视图?

时间:2016-05-10 09:19:41

标签: ios objective-c class

我有一个应用程序。在这个应用程序中使用了很多类方法。我想知道是否可以从类mehtod中删除子视图?

 +(void)addPregressIndicator:(NSString *)strText view:(UIView *)ShowView
{
    CGRect appFrame = [[UIScreen mainScreen] applicationFrame];
    UIView *busyView = [[UIView alloc] initWithFrame:appFrame];
    busyView.backgroundColor = [UIColor clearColor];
    busyView.opaque          = YES;

    UIView *container = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 95, 95)];

    container.layer.borderWidth     = 5;
    container.layer.cornerRadius    = 10;
    container.layer.borderColor     = [UIColor whiteColor].CGColor;
    [container setBackgroundColor:[UIColor blackColor]];

    UIActivityIndicatorView *av = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
    av.center                   = CGPointMake(container.center.x, 34);
    av.hidesWhenStopped         = NO;
    [av startAnimating];

    UILabel *lbl                = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 95, 30)];
    lbl.text                    = strText;
    lbl.textAlignment           = NSTextAlignmentCenter;
    lbl.center                  = CGPointMake(container.center.x, 70);
    lbl.textColor               = [UIColor whiteColor];
    lbl.backgroundColor         = [UIColor clearColor];

    [container addSubview:av];
    [container addSubview:lbl];

    container.center = busyView.center;

    [busyView addSubview:container];

    [ShowView addSubview:busyView];



}

+(void)removePregressIndicator:(UIView *)hideView;

{
    // i want remove busyview that subview in viewcontroller.
}

请帮我删除subivew。

3 个答案:

答案 0 :(得分:1)

您可以为busyView设置唯一标记,例如busyView.tag = your unique tag;

然后您可以使用此代码删除视图

+(void)removePregressIndicator:(UIView *)hideView;
{
    UIView *busyView = [hideView viewWithTag:your unique tag];
    if (busyView){
        [busyView removeFromSuperview];
    }
}

您应该确保busyView标记对hideView的所有子视图都是唯一的。

答案 1 :(得分:0)

+ (void)removePregressIndicator:(UIView *)hideView;
{
    UIView *progView=[self.view viewWithTag:YourTag];
    [progView removeFromSuperview];
}

答案 2 :(得分:0)

为每个视图指定标签并使用标签访问视图并将其放入

+(void)removePregressIndicator:(UIView *)hideView;

{
      UIView *viewToRemove = [self.view viewWithTag:assigne_tag];
     [viewToRemove removeFromSuperview];
}