ios - 如何在 Xcode 中从不同的视图控制器禁用工具栏项
问题描述
所以我创建了一个多视图应用程序,它使用一个工具栏项,允许用户在应用程序中导航。这个工具栏项用于我为应用程序拥有的所有三个视图中。我面临的主要问题是我希望用户在打开第二个视图以允许视图显示其所有内容时不再能够点击工具栏项目(因为我正在逐渐显示标签)。我只想知道我是否能够从第二个视图的控制器中禁用工具栏项。
工具栏项链接到 ViewController.m。我希望能够从 PCRViewController.m 控制器禁用它。
请注意,我已经尝试在 ViewController.m 中创建一个方法并在第二个控制器中调用它,我还尝试在 PCRViewController.m 中使用以下代码行,self.navigationItem.rightBarButtonItem.enabled = NO;
但两者都没有完成这项工作。
如果您需要我提供其他任何内容,请告诉我,以便我解决此问题。谢谢您的帮助!
PS:我使用以下方法从一种视图切换到另一种视图:
- (IBAction)switchViews:(id)sender{
if (!self.questionsViewController.view.superview){
if (!self.questionsViewController){
self.questionsViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Questions"];
}
}
if (!self.pcrViewController.view.superview){
if (!self.pcrViewController){
self.pcrViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"PCR"];
}
}
if (!self.infoViewController.view.superview){
if (!self.infoViewController){
self.infoViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Info"];
}
}
//Switch views
if (self.questionsViewController.view.superview){
self.pcrViewController.view.frame = self.view.frame;
[self switchViewFromViewController:self.questionsViewController toViewController:self.pcrViewController];
}
else if (self.pcrViewController.view.superview){
self.infoViewController.view.frame = self.view.frame;
[self switchViewFromViewController:self.pcrViewController toViewController:self.infoViewController];
}
else{
self.questionsViewController.view.frame = self.view.frame;
[self switchViewFromViewController:self.infoViewController toViewController:self.questionsViewController];
}
}
下面是我使用的 switchViewFromViewController:toViewController 方法的代码:
- (void)switchViewFromViewController:(UIViewController *)fromVC toViewController:(UIViewController *)toVC {
if (fromVC != nil) {
[fromVC willMoveToParentViewController:nil];
[fromVC.view removeFromSuperview];
[fromVC removeFromParentViewController];
}
if (toVC != nil) {
[self addChildViewController:toVC];
[self.view insertSubview:toVC.view atIndex:0];
[toVC didMoveToParentViewController:self];
}
}
解决方案
您可以使用 NSnotificationcentre 与其他控制器通信,然后禁用它
推荐阅读
- markdown - 尝试将多个 README.md 文件合并到 Doxygen 转储中
- c# - 无法在我的应用属性的 Android 清单部分的所需权限下拉列表中找到权限
- right-to-left - 具有相关值的 RTL 选择器
- eclipse - 不支持带有 Java 10.0.1 的 Eclipse
- javascript - 如何将数据附加到 c3.js 中的系列?
- html - Angular mat-table 与包含长字符串的单元格奇怪对齐
- xamarin - 从列表中删除项目时不会触发 Xamarin.Forms Listview 的 ItemDisappearing 事件
- excel - 仅根据条件修改单元格
- fedora - 调整 fedora LiveCD 分区的大小
- html - 即使将 js 保持在顶部,引导导航也无法正常工作