如何在推送的ViewController(Xcode)中获得后退按钮

我有一个viewController,菜单按钮设置为navigationItem,如下所示:

self.navigationItem.setLeftBarButton(leftButton,animated: false)

它弹出一个抽屉菜单,在上下文中很好。但是,如果我想从项目中其他位置按viewController的情况,该按钮更适合使用后退按钮而不是菜单按钮?也就是说,我只想返回上一个viewController,而不是调出菜单。在该特定实例中,如何摆脱菜单按钮,而获得后退按钮?

这是该课程的代码。如您所见,navigationItem在这里设置。

override func viewDidLoad() {
    super.viewDidLoad()

    self.setUserInterfaceStyleLight()
    loginStoryboard = uistoryboard(name: "StoryboardOne",bundle: nil)
    let leftButton = UIBarButtonItem(image: UIImage(named: "menu-icon"),style: .plain,target: self,action:  #selector(self.leftSideMenuButtonpressed(_:)))
    self.navigationItem.setLeftBarButton(leftButton,animated: false)

    self.segmentController.tintColor = .white
    if showContacts == true {
        lastSegmentViewed = 1
    }

    Analytics.logEvent("contact_book",parameters: nil)

    NotificationCenter.default.addobserver(self,selector: #selector(userDidLogin(_:)),name: Nsnotification.Name.UserDidLogin,object: nil)
    NotificationCenter.default.addobserver(self,selector: #selector(applicationAndViewWasResumed(_:)),name: Nsnotification.Name.UIApplicationDidBecomeactive,object: nil)
    self.view.backgroundColor = ThemTemplate.shared.getThem().secondaryColor

    if #available(iOS 13.0,*) {
        segmentController.backgroundColor = UIColor.gray
    } else {

        segmentController.backgroundColor = UIColor.clear
    }
}

是否可以从上一个navigationItem中隐藏和禁用viewController或将其更改为后退按钮?

这就是我推viewController的方式:

uistoryboard *containerStoryboard = [uistoryboard storyboardWithName:@"Login" bundle:nil];
BaseViewController *v = [containerStoryboard instantiateViewControllerWithIdentifier:@"base"];
[self.navigationController pushViewController:v animated:YES];

在尝试使用新的viewController之前的课程中,我尝试过类似的操作:

v.navigationItem.leftBarButtonItem = nil;
v.navigationItem.hidesBackButton = NO;

...什么也没做(是的,将其设置为nil是愚蠢的,只是想看看是否发生了什么而没有)。

我要推送的viewController未嵌入在navigationController中,如果有帮助的话。我尝试将其嵌入一个,但结果相同。

让我知道是否还有其他有用的东西。

winner418 回答:如何在推送的ViewController(Xcode)中获得后退按钮

BaseViewController中添加一个布尔变量:

class BaseViewController: UIViewController {

    var bShowMenu: Bool = true

    override func viewDidLoad() {
        super.viewDidLoad()

        self.setUserInterfaceStyleLight()
        loginStoryboard = UIStoryboard(name: "StoryboardOne",bundle: nil)

        if bShowMenu {
            let leftButton = UIBarButtonItem(image: UIImage(named: "menu-icon"),style: .plain,target: self,action:  #selector(self.leftSideMenuButtonPressed(_:)))
            self.navigationItem.setLeftBarButton(leftButton,animated: false)
        }

        self.segmentController.tintColor = .white
        if showContacts == true {
            lastSegmentViewed = 1
        }

        Analytics.logEvent("contact_book",parameters: nil)

        NotificationCenter.default.addObserver(self,selector: #selector(userDidLogin(_:)),name: NSNotification.Name.UserDidLogin,object: nil)
        NotificationCenter.default.addObserver(self,selector: #selector(applicationAndViewWasResumed(_:)),name: NSNotification.Name.UIApplicationDidBecomeActive,object: nil)
        self.view.backgroundColor = ThemTemplate.shared.getThem().secondaryColor

        if #available(iOS 13.0,*) {
            segmentController.backgroundColor = UIColor.gray
        } else {

            segmentController.backgroundColor = UIColor.clear
        }
    }
}

然后,当您实例化控制器时,告诉它是否使用“菜单”按钮:

UIStoryboard *containerStoryboard = [UIStoryboard storyboardWithName:@"Login" bundle:nil];
BaseViewController *v = [containerStoryboard instantiateViewControllerWithIdentifier:@"base"];

// if you do NOT want the menu button
v.bShowMenu = false

[self.navigationController pushViewController:v animated:YES];
本文链接:https://www.f2er.com/3166359.html

大家都在问