Iphone 在模式切换后删除最后一个UIViewController
所以我在故事板中有3个视图控制器(VC1、VC2和VC3) 每个视图都有一个调用iAction的按钮,该按钮调用此方法以转到另一个视图:Iphone 在模式切换后删除最后一个UIViewController,iphone,objective-c,ios,xcode,ipad,Iphone,Objective C,Ios,Xcode,Ipad,所以我在故事板中有3个视图控制器(VC1、VC2和VC3) 每个视图都有一个调用iAction的按钮,该按钮调用此方法以转到另一个视图: [self doSegue: myViewController_ID]; -(void) doSegue:(NSString *)_myViewController_ID { //get UiViewController from storybord with Unique ID UIStoryboard *storyboard = self
[self doSegue: myViewController_ID];
-(void) doSegue:(NSString *)_myViewController_ID
{
//get UiViewController from storybord with Unique ID
UIStoryboard *storyboard = self.storyboard;
UITableViewController *svc = [storyboard instantiateViewControllerWithIdentifier:_myViewController_ID];
//set presentation & transition styles
svc.modalPresentationStyle = UIModalPresentationFullScreen;
svc.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
//do segue
[self presentViewController:svc animated:YES completion:nil];
}
让我们设置我从VC1到VC2,一次在VC2
我想删除以前的ViewController(VC1)。
如果我现在从VC2转到VC3,我希望从视图层次结构或堆栈VC2中删除,依此类推。
这是因为我不会提供[self dismissViewControllerAnimated:YES completion:nil]代码>方法
我不希望由于堆栈中所有视图控制器的累积而导致内存增长
注意:我不会使用导航控制器或选项卡控制器,只使用视图控制器
谢谢你的帮助。只是猜测一下,我没有试过
在VC2上保留VC1的引用->使用prepareForSegue发送:
然后在VC2上
[self.previousViewController willMoveToParentViewController:nil];
[self.previousViewController removeFromParentViewController];
只是为了确保在视图控制器上插入
- (void)dealloc
{
NSLog(@"dealloc: %@", self);
}
看看控制台
编辑:
您可以在收到内存警告时执行此操作,而不是在segue之后删除每个视图控制器。您还可以尝试在segue之后使用dismissViewControllerAnimated:completion:
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
// ???
if ([self isViewLoaded] && self.view.window == nil) {
NSLog(@"UNLOADING");
self.view = nil;
[self dismissViewControllerAnimated:NO completion:nil];
}
}
我认为没有导航控制器是不可能的,你确定你不想使用它吗?我觉得你实际上想要一个导航控制器,即使你还没有意识到。模态视图用于中断当前导航的流程。像“转到第2页”——“尚未验证”——“当前模式登录屏幕”——“已验证”——“关闭模式视图”——“继续到第2页”一样,如果您不想看到顶栏而不使用UINavigationController,您可以很容易地将其删除。因此,如果我使用导航控制器。。。要删除las视图控制器,我可以做的是使用一些东西弹出最后一个视图,如“PoptorootViewController激活:”?