想要把当前页面的导航栏的返回按钮隐藏掉:

试了很多种代码:
    override func viewWillAppear(animated: Bool) {         super.viewWillAppear(animated) //        SingletonRootNC().navigationItem.setLeftBarButtonItem(nil, animated: false) //        SingletonRootNC().navigationItem.backBarButtonItem = nil         //SingletonRootNC().navigationItem.hidesBackButton = true         self.navigationItem.hidesBackButton = true  | 
都没用。
swift hide navi back
ios – Swift – How to hide back button in navigation item? – Stack Overflow
ios – Hide back button in navigation bar with hidesBackButton in Swift – Stack Overflow
ios – How hide back bar button in navigation controller with swift – Stack Overflow
xcode – iOS 8: UINavigationController hide back button – Stack Overflow
都放到:
viewDidLoad:
    override func viewDidLoad() {         super.viewDidLoad()         self.view.backgroundColor = NavigationBarFillColor //        setNaviRootVC(self)         SingletonRootNC().navigationItem.setLeftBarButtonItem(nil, animated: false)         SingletonRootNC().navigationItem.backBarButtonItem = nil         SingletonRootNC().navigationItem.hidesBackButton = true         SingletonRootNC().navigationItem.setHidesBackButton(true, animated: false)         self.navigationItem.hidesBackButton = true         self.navigationItem.setHidesBackButton(true, animated: false)         let emptyBarItem = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Plain, target: self, action: nil)         self.navigationItem.setLeftBarButtonItem(emptyBarItem, animated: false)         SingletonRootNC().navigationItem.setLeftBarButtonItem(emptyBarItem, animated: false)     }  | 
也没用。
swift hide back button not work
swift hide navigation back button not work
后来找到:
返回按钮,没有被隐藏掉,始终显示的原因了:
自己的app的delegate中,给导航栏添加了代理,导致:
只要有子页面显示,就自动加上左边的返回按钮:
class AppDelegate: UIResponder, UIApplicationDelegate, UINavigationControllerDelegate {     func application(application: UIApplication, willFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool {         SingletonRootNC().delegate = self }     func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) {         let backImage = UIImage(named: "navi_back")         let backNaviBtnItem:UIBarButtonItem = UIBarButtonItem(             image: backImage,             style: UIBarButtonItemStyle.Plain,             //target: SingletonRootNC(),             //target: nil,             target: self,             action: #selector(self.naviBackButtonPressed(_:))         )         let reduceNaviLeftPadding = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FixedSpace, target: nil, action: nil) //        reduceNaviLeftPadding.width = -11 //        reduceNaviLeftPadding.width = -6         reduceNaviLeftPadding.width = -1         if let curVC = SingletonRootNC().topViewController {             gLog.debug("curVC=\(curVC)")             if curVC is MainViewController {             } else {                 curVC.navigationItem.setLeftBarButtonItems([reduceNaviLeftPadding, backNaviBtnItem], animated: true)             }         }     }  | 
然后去加上判断,此处特殊的在检测到新版本时,就不加上返回按钮了:
    func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) {         guard !foundNewVersion else {             gLog.verbose("found new version view, not need back button")             return         } }  | 
即可。
[总结]
想要禁止掉,不显示,返回按钮,上述的各种办法:
        SingletonRootNC().navigationItem.setLeftBarButtonItem(nil, animated: false)         SingletonRootNC().navigationItem.backBarButtonItem = nil         SingletonRootNC().navigationItem.hidesBackButton = true         SingletonRootNC().navigationItem.setHidesBackButton(true, animated: false)         self.navigationItem.hidesBackButton = true         self.navigationItem.setHidesBackButton(true, animated: false)         let emptyBarItem = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Plain, target: self, action: nil)         self.navigationItem.setLeftBarButtonItem(emptyBarItem, animated: false)         SingletonRootNC().navigationItem.setLeftBarButtonItem(emptyBarItem, animated: false)  | 
其实都是可以的。
转载请注明:在路上 » [已解决]swift隐藏掉当前页面导航栏掉返回按钮