哪里可以设置NavigationController.NavigationBar.isUserInteractionEnabled
我有一个关于将navigationBar.isUserInteractionEnabled设置为false的问题。我将它设置在viewDidLoad和viewDidLayoutSubviews中。但是这个设置不起作用,因为即使我设置为false,该值也是如此。 只有当我回到前一个视图(当单击backButton并且navigationBar.isUserInteraction应该设置为false时),我需要设置为false。 我该怎么办?还有其他代表吗?或者我需要在调用viewDidLoad之后设置定时器。 Here is an image to make it clear what I mean哪里可以设置NavigationController.NavigationBar.isUserInteractionEnabled
如果你是具体的关于禁用导航栏的用户交互你可以做它的一些特殊原因,通过调用
斯威夫特:
self.navigationController?.navigationBar.isUserInteractionEnabled = false
的Objective-C:
[self.navigationController.navigationBar setUserInteractionEnabled:false];
编辑2:
我需要设置为false,只有当我回到以前的视图(当点击 返回按钮,然后navigationBar.isUserInteraction应该 被设置为false)
你不能禁用viewWillDisappear中的导航栏用户交互viewController,因为如果backButton按时间点击viewWillDisappear被调用ViewController从导航堆栈中删除。
所以,当你调用self.navigationController你的导航控制器是零。
最简单的解决方案,添加您自己的后退按钮,并在实际弹出VC之前禁用导航栏的用户交互。
在你secondVC
- (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,viewWillAppear或适合您的代码的地方启用和禁用它们。
Objective-C的
for(UIBarButtonItem *item in self.navigationItem.leftBarButtonItems) {
[item setEnabled:false];
}
for(UIBarButtonItem *item in self.navigationItem. rightBarButtonItems) {
[item setEnabled:false];
}
提问标记的语言Objective C的兄弟 –
@庵埠,KARTHIK导航栏的用户交互更新的答案: lemme更新 –
@ anbu-karthik:感谢编辑:)错过了它,而在Xcode中再次复制代码:) –
检查我所提供的代码来禁用轻敲后退按钮 –