从该类中的方法调用中删除superview

时间:2011-07-29 05:59:46

标签: iphone objective-c uiview class-design superclass

我正试图在两个视图之间切换。问题在于如何调用它。

这是解释我情况的最简单方法:

我有一个父视图。 使用子类ChildView,它包含一个表。 在选择该表中的对象后,我希望切换到该父视图的不同子视图。

父--------- |儿童1 |儿童2

Child 1是Parent的子类,允许我访问Parent中的一个方法,该方法在子视图1和2之间切换,但由于某种原因,从Child 1访问它时它不起作用。

有关如何执行此操作的任何线索?下面是基本代码:

儿童1 - (void)changeViews

[super methodToSwitchChildViews];

- (void)methodToSwitchViews

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

2 个答案:

答案 0 :(得分:0)

Super是继承中(子)类之前的类。这里的孩子们似乎是超级视图(父母)的观点。所以使用superview,而不是super。

答案 1 :(得分:0)

好的,我挖了很多东西,最后想出了一个解决方案。如果有人遇到同样的问题,你可以做什么:

在子视图的.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];
}