按下 ToolBar 按钮时向 UIViewController 添加和删除子 ViewController

Posted

技术标签:

【中文标题】按下 ToolBar 按钮时向 UIViewController 添加和删除子 ViewController【英文标题】:Adding and removing children ViewControllers to UIViewController when ToolBar Button is pressed 【发布时间】:2013-11-21 19:30:26 【问题描述】:

我正在使用 ScrollView 实现 UIViewController。在视图的中心,我有一个类似图片中的工具栏:

我有四个 UIViewControllers 要添加,一个用于工具栏的每个按钮。我不知道我是否应该在一开始就将它们全部初始化,然后用一个 NSArray 的 viewControllers 和一个 NSArray 的布尔值来管理所有这些:

我该怎么办?按下任意按钮时更改工具栏底部的 viewControllers

- (void) displayContentController: (UIViewController*) content;

    scrollView.contentSize =CGSizeMake(scrollView.frame.size.width, self.view.frame.size.height + content.view.frame.size.height );
    [self addChildViewController:content];
    content.view.frame = [self frameForContentController];
    [scrollView addSubview:content.view];
    [content didMoveToParentViewController:self];          


- (void) hideContentController: (UIViewController*) content

    [content willMoveToParentViewController:nil];  // 1
    [content.view removeFromSuperview];            // 2
    [content removeFromParentViewController];      // 3

我实际上从未使用过 childViewControllers,我真的不知道如何使用它们

【问题讨论】:

你的问题是? 我该如何管理这个?按下任何按钮时更改工具栏底部的视图控制器? 我认为没有通用的答案。您可以在工具栏操作上创建新的视图控制器。您也可以在之前的任何时刻创建它们(并存储在数组中),或者在 getter 中创建它们。我不知道你到底需要什么。 @Roxee Man :我想这取决于您的需要;)您可以在添加新视图控制器时删除旧视图控制器,并在它们之间添加某种过渡。您也可以将它们堆叠起来。 让我们continue this discussion in chat 【参考方案1】:

您想要创建自己的 TabBarcontroller。您应该使用子视图控制器,否则自动旋转将无法按预期工作。当您与 tabBar 交互时,您应该使用 ViewControllers 数组(需要传递数据)和委托。这是一个很好的例子。MHTabBarController。

这是一个示例界面:

@interface MHTabBarController : UIViewController @property (nonatomic, copy) NSArray *viewControllers; @property (nonatomic, weak) UIViewController *selectedViewController; @property (nonatomic, assign) NSUInteger selectedIndex; @property (nonatomic, weak) id 代表; - (void)setSelectedIndex:(NSUInteger)index 动画:(BOOL)animated; - (void)setSelectedViewController:(UIViewController *)viewController 动画:(BOOL)animated; @结尾

【讨论】:

但其实我底部已经有了一个TabBar,但是我还需要屏幕中间的toolBar来改变下面的viewcontrollers 我们不要在这里谈论工具栏(我不确定;)),它的行为可能会有所不同。 @RoxeeMan 没关系。每个 UIViewController 容器都是一个 UIViewController。 我可以在任何我想要的地方设置这个tabBar吗?如果我在视图中滚动,我可以移动它吗? 不.. 对不起,我需要工具栏可以随着滚动视图移动

以上是关于按下 ToolBar 按钮时向 UIViewController 添加和删除子 ViewController的主要内容,如果未能解决你的问题,请参考以下文章

SearchDelegate 在单击搜索按钮时向屏幕返回“true”

怎么在toolbar上添加按钮

使用 for 循环时向 JButton 添加操作

React native mqtt - 按下按钮时发布

显示在 Qt 中按下按钮的时间

使用动画更改 CollectionView 位置,但在第一次滚动时向后移动