You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取bool值检测UINavigationController是否存在可pop的视图

解答

判断UINavigationController是否存在可pop的上一级视图,有两种常用实现方式:

全系统版本兼容方案

直接读取导航栈的视图控制器数组长度判断,支持所有iOS版本:

  • 逻辑说明:UINavigationController的viewControllers数组按入栈顺序存储所有栈内控制器,数组首位为根视图控制器,末位为当前显示的顶部控制器。当数组长度大于1时,代表当前顶部控制器不是根控制器,存在可返回的上一级视图。

代码示例:

// Swift 写法
let canPop = navigationController?.viewControllers.count ?? 0 > 1
// Objective-C 写法
BOOL canPop = self.navigationController.viewControllers.count > 1;

iOS 16+ 快捷方案

iOS 16及以上系统,UINavigationController新增了内置只读属性可以直接获取判断结果:

// Swift 写法
let canPop = navigationController?.canPopViewController ?? false
// Objective-C 写法
BOOL canPop = self.navigationController.canPopViewController;

需求实现示例

你需要控制自定义按钮显隐时,可在当前视图控制器的viewWillAppear生命周期方法中做判断即可:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    // 判断是否可pop
    let canPop = navigationController?.viewControllers.count ?? 0 > 1
    // 不可pop时隐藏按钮,可pop时显示
    yourCustomButton.isHidden = !canPop
}

内容的提问来源于stack exchange,提问作者velmash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 21:27:02