0

我使用以下代码在视图控制器之间切换..(工作正常)顺便说一下,我也有很多视图控制器,我不只是在 2 之间来回切换

NSString * storyboardName = @"Main";
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle: nil];

MyTableViewVC *detailView = (MyTableViewVC *)[storyboard instantiateViewControllerWithIdentifier:@"MyTableViewVC"];

    //pass data through to VC

[self presentViewController:detailView animated:NO completion:nil];

当我在视图控制器之间转换时,我看到内存使用量在攀升

所以我做了一些研究并意识到我没有解雇以前的视图控制器。[self dismissViewControllerAnimated:NO completion:nil];我在调用之前使用了以下代码presentViewcontroller:(之后我也尝试过使用它)但它不起作用。如果我在没有任何事情发生后使用它..在收到以下警告之前使用它

线程 1:EXC_BAD_ACCESS(code=1.... blah blah 告诉我你是否需要剩下的

我也尝试过做这样的事情..

[detailView presentViewController:detailView animated:NO completion:nil];
[self dismissViewControllerAnimated:NO completion:nil];

我究竟做错了什么?

4

2 回答 2

0

下面是从导航堆栈中删除 VC 的代码。

NSMutableArray *navigationArray = [[NSMutableArray alloc] initWithArray: self.navigationController.viewControllers];

// [navigationArray removeAllObjects];    // This is just for remove all view controller from navigation stack.
[navigationArray removeObjectAtIndex: 2];  // You can pass your index here
self.navigationController.viewControllers = navigationArray;
[navigationArray release];

但是请注意, 通过这样做,当您从堆栈中删除前一个 VC 时,您将无法转到前一个 VC。

当您抱怨内存时,我会再次说 DOUBLE CHECK 代码并调查内存被更多使用的地方。如果不需要该对象,请释放该对象,以免出现内存问题。

于 2014-04-20T18:47:58.117 回答
-1

如果要返回根视图控制器,则必须使用此代码。

[self.navigationController popToRootViewControllerAnimated:YES];
于 2014-04-18T22:58:17.977 回答