我的应用程序中有以下视图控制器结构:
带有(不是导航栏)的容器视图控制器有一个嵌入的,这提供了额外的子视图控制器:UIToolBar
UIPageViewController
UIPageViewController
container view controller (toolBar) -> PageViewController -> ViewController 1,
ViewController 2
我想根据呈现的子视图控制器 1 和 2 在容器视图控制器上的工具栏中添加和删除按钮 (BarButtonItems)。
您如何建议子视图控制器 1 和 2 访问容器视图控制器中的工具栏以添加和删除按钮?
容器视图控制器中的属性似乎
toolbarItems
始终为 0,即使其中有按钮。关于为什么会这样的任何想法?属性 <> 0是否toolbarItems
仅适用于导航栏?
编辑
根据用户 DBD 的建议,我已将以下方法添加到CompanyViewController
具有工具栏的视图控制器中,并且是拆分视图详细信息窗口中我的视图控制器的基类(我的所有详细视图控制器都继承自CompanyViewController
)。这些详细视图控制器之一用作带有页面视图控制器和上述子视图控制器的内容视图控制器。
公司视图控制器:
- (void)addToolBarItems:(NSArray *)buttonArray
{
NSMutableArray *items = [[self.toolbar items] mutableCopy];
[buttonArray enumerateObjectsUsingBlock:^(UIBarButtonItem *barButtonItem, NSUInteger idx, BOOL *stop) {
if (! [items containsObject:barButtonItem] ) [items insertObject:barButtonItem atIndex:0];
}];
[self.toolbar setItems:items animated:NO];
}
- (void)removeToolBarItems:(NSArray *)buttonArray;
{
NSMutableArray *items = [[self.toolbar items] mutableCopy];
[buttonArray enumerateObjectsUsingBlock:^(UIBarButtonItem *barButtonItem, NSUInteger idx, BOOL *stop) {
if ( [items containsObject:barButtonItem] ) [items removeObjectAtIndex:idx];
}];
[self.toolbar setItems:items animated:NO];
}
这就是我尝试CompanyViewController
从我的子控制器访问的方式:
- (CompanyViewController*)parentViewControllerWithToolbar
{
UIViewController *parentPageViewController = self.parentViewController;
CompanyViewController *parentContentViewController = (CompanyViewController*)parentPageViewController.parentViewController;
return (CompanyViewController*)parentContentViewController;
}
但是,当尝试addToolBarItems
从子视图控制器调用该方法时,我无法在 Xcodes 的自动完成中获取该方法:即使我导入了#import "CompanyViewController.h"
.
关于我可能在这里遗漏的任何建议?