无法使用removeFromSuperview方法删除视图

时间:2011-08-22 14:02:11

标签: iphone uiview uiviewcontroller superview

我无法移除视图。我使用addsubview方法添加视图,但是当我使用RemoveFromSuperView时。

//我在这里添加登录按钮

的视图
medicalViewObject=[[MedicalInfoViewController alloc] initWithNibName:@"MedicalInfoViewController" bundle:nil];
    [self.view addSubview:medicalViewObject.view];

//这里我在另一个ViewController中编写RemoveFromSuperView

-(void)BackToMainView
{
    [self.view removeFromSuperview];
}

2 个答案:

答案 0 :(得分:2)

它无效,因为您正在将removeFromSuperview发送到错误的视图对象。这就是你需要的:

[medicalViewObject.view removeFromSuperview];

编辑:

您的问题表明您有一个视图(因为您没有在您的问题中包含此视图的名称,我将其简称为MainView),然后您将一个名为medicalViewObject的子视图添加到您的MainView中。您还有一个方法调用“BackToMainView”,您要执行removeFromSuperview函数。您的问题表明,您的medicalViewObject中的某些用户操作(例如按下按钮)应该调用“BackToMainView”方法。

如果这一切都正确,那么我上面的回答是正确的。但根据您的评论,听起来您还需要在您的medicalViewObject中实现委托协议,然后让您的“MainView”采用该协议。

在您的medicalViewObject中的委托声明中,您需要进行如下方法调用:

-(void)backButtonWasPressed;

在MainView的实现中,它看起来应该是这样的:

-(void)backButtonWasPressed
{
    [medicalViewObject.view removeFromSuperview];
}

现在,无论您在medicalViewObject中使用哪些用户操作返回主视图(无论是按钮还是其他对象),都需要调用以下内容:

[delegate backButtonWasPressed];

根据您的情况,它可能看起来有点不同,但这是完成您要做的事情的一种相当常见的方式。我希望这会有所帮助。

答案 1 :(得分:1)

当您致电[self.view removeFromSuperview];时,您正在告诉您所处的任何视图控制器,以删除其自己的视图。您应该从完全相同的MedicalInfoViewController中调用该行,或从外部告诉medicalViewObject删除其视图,如[medicalViewObject.view removeFromSuperview];