【问题标题】:iOS removing viewiOS 移除视图
【发布时间】:2012-01-23 02:44:36
【问题描述】:

我有两个视图,viewA 和 viewB。我用

在 vi​​ewA 上加载 viewB
[self.view addSubview: viewB.view];

我不想删除 viewB,但我不知道该怎么做。我试过了

[self.view removeFromSuperview];

但这不起作用。我该怎么做?

【问题讨论】:

    标签: objective-c ios view


    【解决方案1】:

    致电-removeFromSuperviewviewB.view

    【讨论】:

    • 试过了,应用崩溃了:-[viewB performSelector:withObject:withObject:]: message sent to deallocated instance 0xf568d40
    • 你能发布更多你的代码吗?如果没有更多上下文,很难知道出了什么问题。
    • 我发现崩溃与此无关。现在可以完美运行了。
    • 谢谢,帮我删除了按下按钮时的按钮。
    【解决方案2】:

    要从其父视图中删除 viewB 的视图,您需要对该视图调用 removeFromSuperview。

    [viewB.view removeFromSuperview];
    

    来自UIView class reference

    removeFromSuperview
    

    取消接收者与其父视图和窗口的链接,并将其移除 来自响应者链。

    【讨论】:

      【解决方案3】:

      通过使用 removeFromSuperView,您走在了正确的轨道上。但是您需要将消息发送到要删除的视图。就像Till例子

      [viewB.view removeFromSuperview];
      

      但是,如果您不使用属性和综合方法,则在您想要删除它时,您可能没有 viewB 的句柄。我会使用@property 和@synthesize。所以你可以使用:

      [self.viewB.view removeFromSuperview];
      

      另一种方法是使用这个:(假设您的 viewB.view 是您添加到 viewA.view 的最后一个视图

      [[self.view.subviews objectAtIndex:(self.view.subviews.count - 1)]removeFromSuperview];
      

      您可以通过以下方式获取 viewA 的所有子视图的列表:

      NSLog(@"subviews of viewA.view: %@",self.view.subviews);
      

      【讨论】:

      • 仅供参考,您可以调用 lastObject 来获取数组的最后一个对象(而不是 self.view.subviews.count - 1)
      • 我以编程方式添加了很多东西,所以removeFromSuperview 是我的选择。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-05
      • 1970-01-01
      相关资源
      最近更新 更多