0

我无法删除视图。我正在使用 addsubview 方法添加视图,但是当我使用RemoveFromSuperView.

// 这里我从登录按钮添加视图

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

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

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

2 回答 2

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

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

于 2011-08-22T14:07:56.233 回答
1

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

于 2011-08-22T14:07:17.923 回答