Удаление супервизора из вызова метода внутри этого класса

Я пытаюсь переключиться между двумя представлениями прямо сейчас. Проблема в том, как это называется.

Вот самый простой способ объяснить мою ситуацию:

У меня есть родительский вид. С подклассом ChildView, который содержит таблицу. После выбора объекта в этой таблице я хочу переключиться на другое дочернее представление этого родительского представления.

Родитель--------- |Ребенок 1 |Ребенок 2

Child 1 является подклассом Parent, чтобы позволить мне получить доступ к методу в Parent, который переключается между дочерними представлениями 1 и 2, но по какой-то причине он не будет работать при доступе к нему из Child 1.

Любые подсказки о том, как это сделать? Вот основной код:

Дочерний элемент 1 – (пусто) changeViews

[super methodToSwitchChildViews];

Родительский — (void) methodToSwitchViews

[self.child1.view removeFromSuperView];
[self.view insertSubView:child2.view atindex:0];

person Chad    schedule 29.07.2011    source источник
comment
Что вы имеете в виду, говоря, что ваш ребенок является подклассом вашего родителя? Это будет означать только то, что ребенок имеет свойства своего родителя, а не то, что он имеет связь с его родителем.   -  person Cyprian    schedule 29.07.2011


Ответы (2)


Супер - это класс, который предшествует (под)классу в наследовании. Здесь дети кажутся взглядами на супервизию (родителя). Так что используйте superview, а не super.

person Rudy Velthuis    schedule 29.07.2011

Хорошо, я немного покопался и, наконец, нашел решение. Если у кого-то когда-нибудь возникнет такая же проблема, вот что вы делаете:

В файле .h дочернего представления выполните

@class parentViewName

Затем в файле .m добавьте

#import "parentViewName.h"

...

- (void) functionToRemoveSelfFromView {
   parentViewName *PARENT = [[parentViewName alloc] init];

   // You must have a method in the parent view to toggle or remove the subview, the way
   // you want it done, then call it with the new delegate. Make sure it doesn't set this 
   // view to nil or releases it because this method has yet to return. If animating do not
   // hide this view either.

   [PARENT methodToRemoveSelfFromView];
   [PARENT release];
}
person Chad    schedule 23.08.2011