Ios 在何处设置NavigationController.NavigationBar.isUserInteractionEnabled

Ios 在何处设置NavigationController.NavigationBar.isUserInteractionEnabled,ios,objective-c,uinavigationcontroller,uinavigationbar,Ios,Objective C,Uinavigationcontroller,Uinavigationbar,我在将navigationBar.isUserInteractionEnabled设置为false时遇到问题。我在viewDidLoad和ViewDidLayoutSubView中设置了它。但是这个设置不起作用,因为即使我设置为false,该值也是true。 只有当单击backButton返回到上一个视图时,我才需要设置为false,然后navigationBar.isUserInteraction应设置为false。 我怎么做?还有其他代表吗?或者我需要在调用viewDidLoad后设置计时器

我在将navigationBar.isUserInteractionEnabled设置为false时遇到问题。我在viewDidLoad和ViewDidLayoutSubView中设置了它。但是这个设置不起作用,因为即使我设置为false,该值也是true。 只有当单击backButton返回到上一个视图时,我才需要设置为false,然后navigationBar.isUserInteraction应设置为false。 我怎么做?还有其他代表吗?或者我需要在调用viewDidLoad后设置计时器。

如果您出于某种特定原因而明确表示要禁用导航栏的用户交互,您可以通过调用

斯威夫特:

目标C:

编辑2:

只有在返回到以前的视图时,我才需要设置为false 单击backButton,然后navigationBar.isUserInteraction应 设为假

不能禁用viewController的ViewWillEnglishe中的导航栏用户交互,因为如果在从导航堆栈中删除ViewWillEnglishe调用viewController时点击backButton

因此,当您调用self.navigationController时,您的导航控制器为零

最简单的解决方案是,在实际弹出VC之前,添加自己的后退按钮并禁用导航栏的用户交互

在你的第二个VC

- (void)viewDidLoad {
    [super viewDidLoad];

    UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"back" style:UIBarButtonItemStyleBordered target:self action:@selector(handleBack)];

    self.navigationItem.leftBarButtonItem = backButton;
    // Do any additional setup after loading the view from its nib.
}

-(void)handleBack {
    [self.navigationController.navigationBar setUserInteractionEnabled:false];
    [self.navigationController popViewControllerAnimated:true];
}
那就行了

编辑3:

您需要设置导航栏的用户交互,您可以通过禁用左右栏按钮项的用户交互来实现相同的效果

    for item in self.navigationItem.leftBarButtonItems! {
        item.isEnabled = false
    }

    for item in self.navigationItem.rightBarButtonItems! {
        item.isEnabled = false
    }
您可以根据逻辑在viewDidLoad、ViewWillDisplay或任何适合您的代码的地方启用和禁用它们

目标-C


提问者将该语言标记为objective Cbro@anbu-karthik:谢谢你的编辑:在Xcode中再次复制代码时错过了它:没关系,我的兄弟,.ok。我遵照你的指示去做了。谢谢你的帮助。检查更新的答案,我已经提供了代码,以禁用用户互动的导航栏上点击后退按钮
- (void)viewDidLoad {
    [super viewDidLoad];

    UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"back" style:UIBarButtonItemStyleBordered target:self action:@selector(handleBack)];

    self.navigationItem.leftBarButtonItem = backButton;
    // Do any additional setup after loading the view from its nib.
}

-(void)handleBack {
    [self.navigationController.navigationBar setUserInteractionEnabled:false];
    [self.navigationController popViewControllerAnimated:true];
}
    for item in self.navigationItem.leftBarButtonItems! {
        item.isEnabled = false
    }

    for item in self.navigationItem.rightBarButtonItems! {
        item.isEnabled = false
    }
for(UIBarButtonItem *item in self.navigationItem.leftBarButtonItems) {
    [item setEnabled:false];
}

for(UIBarButtonItem *item in self.navigationItem. rightBarButtonItems) {
    [item setEnabled:false];
}