从一组视图中删除一个视图

时间:2015-08-07 13:18:58

标签: ios objective-c

有一系列视图声明为

@property (nonatomic, strong) NSMutableArray *views;

每个视图都是前一个视图的子视图(就像一副牌)。像这样:

     ____________
    | A   ______|_____ 
    |    | B_________|___ 
    |    |  | C .    .   |
    |____|..|……….    .   | 
         |__|………………………   |
            |____________|

我需要删除一个视图(例如此处的视图B)并使其子视图(此处视图C)获取视图的B位置。这就是我在动画中所做的事情:

CGPoint oldCenter = [view center]; // view must be removed
MyView *subView = [MyView new];

subView = [[view subviews] firstObject]; // there is only one view’s subview 

MyView *superView = (MyView *)[view superview];

[view removeFromSuperview];

[superView addSubview:subView];

[subView setCenter:subView.superview.center];
[subView setCenter:oldCenter];

不仅view被删除,而且它的子视图也只有A而且我真的不知道该怎么做。

2 个答案:

答案 0 :(得分:0)

删除视图时,会删除其上的所有对象。就像把书页拿出来一样,该页面上的文字也被删除了。你现在做的是你把C作为B的子视图吗?现在如果我们遵守书的理论,你就在那个页面上放了一个便利贴。现在,当我们现在删除具有文本(对象)和便利贴(C)的页面(B)时,一切都被取出,剩下的就是其他页面(A)。不要将它们作为前一个的子视图,而是将它们全部设为A的子视图(仅当A不能被取出时)。希望这有帮助!!

答案 1 :(得分:0)

如果A为" superview",则将B视为"查看",并将C视为"子视图" - 然后在删除之前查看' -B将其子视图' -c添加到' superview' -A。

checkbox1.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
    {
        if (isChecked)
        {
            layout1.setVisibility(View.VISIBLE);
        }
        else
        {
            layout1.setVisibility(View.INVISIBLE);
        }
    }
});