Ios 弹出不足以删除视图控制器

Ios 弹出不足以删除视图控制器,ios,objective-c,uiviewcontroller,Ios,Objective C,Uiviewcontroller,我遇到了一个问题,我相信这是由于我错误地删除了我的视图。我会尽力解释,希望大家都能理解。 我有一个UISplitview应用程序,它基本上有两个视图。主要细节视图,以及本质上是地图的视图。在表中选择某个字符串时,调用此代码(此代码在detailview中,但rainObject是从UIViewController传入的) -(void)setReceivedRainObject:(id)receivedRainObject{ if ([receivedRainObject isEqual

我遇到了一个问题,我相信这是由于我错误地删除了我的视图。我会尽力解释,希望大家都能理解。 我有一个
UISplitview
应用程序,它基本上有两个视图。主要细节视图,以及本质上是地图的视图。在表中选择某个字符串时,调用此代码(此代码在detailview中,但rainObject是从
UIViewController
传入的)

-(void)setReceivedRainObject:(id)receivedRainObject{
    if ([receivedRainObject isEqualToString:@"Test"]){
        mapViewController *mapView=[[mapViewController alloc]initWithNibName:@"mapViewController" bundle:nil location:0];
        [self.navigationItem setHidesBackButton:NO animated:NO];
        [self.navigationController setNavigationBarHidden:NO animated:YES];
        [self.navigationController pushViewController:mapView animated:NO];
    }
}
因此,上面的代码会按预期在detailscreen中很好地加载我的地图。 但是,当我单击左视图控制器中的第一个选项(test)时,它将调用一个新的视图控制器(viewcontroller2,其中一行名为test2),第二个控制器将调用第三个(viewcontroller3,其中一行名为test3) 在viewcontoller3的
视图中消失
,在测试的
视图中出现
,我有此代码

 [self.detailViewController.navigationController popViewControllerAnimated:NO];
因此,当我向下钻取到viewcontroller时,当我单击backbutton时,它会弹出一个贴图,当testview加载时,它会弹出第二个贴图。留下详细视图,显示我是如何开始的。 但是,我注意到,如果我两次单击“测试”按钮,然后尝试返回,则会出现一个“额外屏幕”,该屏幕应随pop一起删除。我想知道如何删除大量视图或阻止程序添加这么多视图。 谢谢

请使用

mapViewController *mapView=[[mapViewController alloc]initWithNibName:@"mapViewController" bundle:nil location:0];
[self.navigationController pushViewController:mapView animated:YES];

浏览视图控制器。

您会看到额外的屏幕,因为您已经按了两次mapView,每次按测试按钮一次。我不确定您想要实现什么样的导航,但我觉得不太对劲。听起来您的按钮应该只是在详细视图中显示一个新的视图控制器,而不是按它。在
视图中调用
popViewController
将出现
ViewDidEnglish
对我来说无疑是敲响了警钟。如果通过应用程序进行导航不使用一堆视图,请不要使用导航controller@Paulw11我的按钮必须在我点击地图时显示视图,否则如何在没有pus的情况下完成兴。演示和推送有什么区别。第二,当我处理完它后,不会弹出你要做什么来摆脱它?你不必使用导航控制器。你在使用故事板吗?如果是这样,你可以在你的基本detailviewcontroller和新的之间创建一个替换段,给它一个名称,然后用<代码>[detailViewController PerformsgueWithIdentifier:]
弹出是您对navigationcontroller所做的操作,因为它是一个视图堆栈,但它不是在应用程序中管理视图的唯一方法,如果您的应用程序不是以一个视图堆栈的形式自然导航的,那么无论堆栈有多深,它都可能妨碍它弹出到根视图控制器。navig不会保留这些视图是否实际释放取决于是否有其他对象仍保留引用。您可以在应用程序运行时在XCode中查看内存图,或者使用Instruments工具监控内存使用情况,查看对象是否“粘滞”