我无法移除视图。我使用addsubview方法添加视图,但是当我使用RemoveFromSuperView
时。
//我在这里添加登录按钮
的视图medicalViewObject=[[MedicalInfoViewController alloc] initWithNibName:@"MedicalInfoViewController" bundle:nil];
[self.view addSubview:medicalViewObject.view];
//这里我在另一个ViewController中编写RemoveFromSuperView
-(void)BackToMainView
{
[self.view removeFromSuperview];
}
答案 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];