为了账号安全,请及时绑定邮箱和手机立即绑定

从导航堆栈中删除视图控制器

从导航堆栈中删除视图控制器

青春有我 2019-11-28 13:00:06
我有一个导航堆栈,说5个UIViewControllers。我要在第五个视图控制器中单击一个按钮,以删除堆栈中的第三个和第四个视图控制器。是否有可能做到这一点?如果可以,怎么办?
查看完整描述

3 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

使用此代码并享受:


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

希望这会帮助你。


编辑:Swift代码


guard let navigationController = self.navigationController else { return }

var navigationArray = navigationController.viewControllers // To get all UIViewController stack as Array

navigationArray.remove(at: navigationArray.count - 2) // To remove previous UIViewController

self.navigationController?.viewControllers = navigationArray


查看完整回答
反对 回复 2019-11-28
?
12345678_0001

TA贡献1802条经验 获得超5个赞

您可以首先获取数组中的所有视图控制器,然后在检查了相应的视图控制器类之后,可以删除所需的视图控制器。


这是一小段代码:


NSArray* tempVCA = [self.navigationController viewControllers];


for(UIViewController *tempVC in tempVCA)

{

    if([tempVC isKindOfClass:[urViewControllerClass class]])

    {

        [tempVC removeFromParentViewController];

    }

}

我认为这会使您的工作更轻松。


查看完整回答
反对 回复 2019-11-28
?
红糖糍粑

TA贡献1815条经验 获得超6个赞

斯威夫特3&4/5


self.navigationController!.viewControllers.removeAll()


self.navigationController?.viewControllers.remove(at: "insert here a number")


斯威夫特2.1


移除所有:


self.navigationController!.viewControllers.removeAll()


从索引处删除


self.navigationController?.viewControllers.removeAtIndex("insert here a number")


还有很多其他可能的动作,例如removeFirst,range等。


查看完整回答
反对 回复 2019-11-28
  • 3 回答
  • 0 关注
  • 653 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信