0

目前我正在使用以下行将方法的视图作为子视图添加到方法内的另一个视图中。

[self.landscape addSubview:[self makeSpin]];

这很好用,一切都很花哨,但现在我需要知道如何隐藏它。

显然[self.landscape setHidden:[self makeSpin]];是不行的。
任何人都可以为我提供有关如何执行此操作的快速示例吗?或者即使是正确方向的一点也会有所帮助。

提前致谢。

4

3 回答 3

1

我假设 makeSpin 返回的视图是一个实例变量(如果不是,您必须以某种方式使其成为实例变量或使用标签)。如果是,试试这个:

[self makeSpin].hidden = YES;
于 2012-08-14T21:37:26.283 回答
1

如果[self makeSpin]始终返回相同的对象(不创建和返回新视图而不是自动发布的视图),那么您可以删除视图,例如:

[[self makeSpin] removeFromSuperView];

否则你需要给子视图添加一个标签(视图从

[self makeSpin]).

喜欢:

UIView *tempView = [[self makeSpin] retain];
tempView.tag = 7;
[self.landscape addSubview:tempView];
[tempView release];

要删除视图,您需要编写如下:

[[self.landscape viewWithTag:7] removeFromSuperview];

你也可以使用这个循环,

for (UIView *subview in [self.landscape subviews])
{
    if (subview.tag == 7)
    {
        [subview removeFromSuperview];
    }
}
于 2012-08-15T09:13:40.010 回答
0

如果返回一个未分配给实例变量的自动释放视图,那么除了尝试在的子视图数组makeSpin中找到它之外,您将无法访问它。self.landscape到目前为止,最简单的做法是在您的类中创建一个属性并使用它来保存新子视图的值,以便您以后可以使用它。您只需要记住在您的 viewDidUnload 方法中将其设置为 nil。

于 2012-08-14T21:42:25.747 回答