2015-08-07 5 views
-1

есть массив просмотров объявленУдалить один вид из набора представлений

@property (nonatomic, strong) NSMutableArray *views; 

Каждый вид является подвидом из предыдущих (как колода карт). Что-то вроде этого:

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

И мне нужно, чтобы удалить один вид (например вид В здесь) и сделать его подвид (вид 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 и на самом деле не знают, что делать.

+0

Вместо добавления следующего вида в предыдущее представление и создания цепочки добавьте их все в родительское представление и соответствующим образом управляйте ими. –

+0

@AdilSoomro Спасибо за совет, но мне нужна именно цепочка просмотров –

+0

Не могли бы вы вставить еще немного кода? Насколько я понял, у вас есть представление A как «супервизор», просмотр B как «вид» и просмотр C как «subview», правильно? – Walucas

ответ

0

Когда вы удаляете представление, вы удаляете все объекты, находящиеся на нем. Это похоже на то, что выкладываете страницу из книги, текст на этой странице также удаляется. Теперь, что вы сделали, так это то, что вы сделали C подчиненным B правильным? Теперь, если мы будем придерживаться теории книги, вы разместили на ней эту заметку. Теперь, когда мы теперь удаляем эту страницу (B), которая имеет текст (объекты) и пост-это заметку (C), все вынимается, а все остальное - это другие страницы (A). Вместо того, чтобы сделать их подчиненными предыдущему, сделайте их все подпунктами A (только если A не будет выниматься когда-либо). Надеюсь, это помогло!

0

Если A в качестве «супервизора», посмотрите B как «вид» и просмотрите C как «subview» - затем перед удалением «view» -B добавьте «subview» -c в «superiew» -A.

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

[superView addSubview:subView]; 
[view removeFromSuperview]; 

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

Спасибо, это работает. Удалив вид, я удалил его ограничения, поэтому мне пришлось их снова установить. И в этом была проблема –

+0

Отлично. Я ожидал, что мой ответ будет правдивым или голосом, если каким-то образом это поможет вам. Благодарю. – KiranJasvanee