问题标签 [uicontainerview]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
251 浏览

ios - UICollectionViewController 嵌入 UIContainerView - 如何将数据传递给父级?

我的设置如下所示:

UIViewController在它上面有一个不同的元素,包括一个UIContainerView. 这个容器中嵌入了一个UICollectionViewwith 9 。UICollectionViewCell所有这些细胞都有一个UILabel。单元格都是可选的。所以我基本上做的是创建一个多选元素。我的问题是,如何将选定的单元格(最好是带有所有选定元素的字符串的 NSArray)传递给父级,UIViewController

到目前为止我所做的是IBOutlet在顶部创建一个容器UIViewController

我希望能够像这样访问选定单元格的数组:

我怎样才能最好地做到这一点?

0 投票
2 回答
226 浏览

ios - 如何在容器视图中的 tableview 周围获取可见框架

主题说明了一切:我的应用程序的 iPhone 版本有一些 UITableView,我想在 iPad 版本中使用。为此,我正在使用容器视图对象,它“导入”另一个(更大)视图控制器内部的现有表视图。工作正常。

但它看起来有点奇怪,因为 tableview 的边框没有显示。在下图中,您可以在左侧看到设计器的布局,在右侧看到我的容器视图。右侧的“边框”缺失。

我想知道是否有办法获得这个边界。我没有发现任何有用的文档。

Q1:是否有标准属性等来获得这个框架?

Q2:如果没有 - 你们会怎么做?我想,我可以在容器框架后面放置一个带有框架背景颜色的空视图。那里有更好的解决方法吗?

在此处输入图像描述

0 投票
1 回答
545 浏览

ios - 如何将静态 UITableView 转换为动态 TableView

我有一个静态 TableView,现在需要变成一个动态 TableView,因为其他视图需要放置在 ViewController 周围,而在我的情况下,这不能使用容器来完成。

问题是:如何有效地将表格视图从静态转换为动态?

我知道必须将继承从 UITableView 更改为 UIViewController 并添加 plus 委托方法。

但是所有的表格部分怎么样:我在静态表格中有 3 个部分和 6 种类型的单元格。我真的需要为所有这些单元格类型继承 UITableViewCell 并手动处理所有内容,还是有更聪明的方法来做到这一点?

0 投票
1 回答
4283 浏览

ios - 容器视图附带的点击手势识别器不会阻止容器视图中按钮的触摸事件,但会阻止工具栏按钮的触摸事件

所以我有一个视图控制器,它有一个容器视图。容器视图嵌入了导航控制器,该控制器也是视图控制器的父控制器。故事板是这样的:

视图控制器(mainViewController)--> 导航控制器--> 视图控制器(contentViewController

您可以在下面看到故事板的屏幕截图。

第一个箭头是从容器视图到导航控制器的嵌入序列。第二个箭头是一个关系,代表contentViewController导航控制器的根视图控制器。

mainViewController并且contentViewController是同一类的对象,名为testViewController. 它是 UIViewController 的子类。它的实现很简单。它只有三种IBAction方法,没有别的。下面是实现代码:

我在mainViewController. 它在容器视图被点击时发送viewTapped:(id)sender消息。mainViewController在 的根视图内部contentViewController,有一个按钮,点击时buttonTapped:(id)sender会向其发送消息contentViewController。工具栏中有一个条形按钮,点击时会向其contentViewController发送barButtonTapped:(id)sender消息contentViewController。最初的场景是mainViewController。当应用程序运行时,我发现只有栏按钮的触摸事件被阻止,触摸事件被按钮正确处理。在 Apple 的文档Regulating the Delivery of Touches to Views中,它说:

在简单的情况下,当触摸发生时,触摸对象从 UIApplication 对象传递到 UIWindow 对象。然后,在将触摸传递给视图对象本身之前,窗口首先将触摸发送到附加到发生触摸的视图(或该视图的超级视图)的任何手势识别器。

我认为触摸事件不会传递给按钮。这真的让我很困惑。有人可以解释这种行为吗?非常感谢。


故事板截图故事板

0 投票
1 回答
89 浏览

ios - 在 iOS 中切换 UIViewControllers 不起作用

我试图UIViewController在其他UIViewcontroller使用addChildViewController功能之上显示一个。childViewController 是一个 tableView,它显示在我的 MainViewController 之上,但是我看不到它具有的 table view。如果我单独执行 childViewController,tableView 工作正常,所以我在这里想念什么。

这是我添加 childVC 的方式:

这是我要展示的 childVC:.h

并且:.m

0 投票
0 回答
499 浏览

ios - 在视图容器中重用 ViewController

我的故事板我有 2 个容器视图(见图):

  • 上和下是标签栏中的标签

  • 上面的包含 A(左 - TableView)和 C。是 A 的详细视图。

  • 下一个也包含 A(右 - TableView)和 C。

C 嵌入在导航控制器中,因为有时需要将 C 替换为另一个视图。

有没有办法重用C?我按照图片中显示的方式将其连接起来。C 通过(通常的)rootview (Navigation) Segue 连接到导航控制器。

但副作用是 C 仅显示在首先调用 C 的视图上(A 或 B - 首先被选项卡)。我想这是因为打开的第一个视图需要 C 的“所有权”。

问:有没有办法以这种或另一种方式重用 C 而不仅仅是复制它?

谢谢你的想法。

编辑:视图 A/C 和 B/C 不是拆分视图,而是容器视图(Xcode 对象库“容器视图”)。

在此处输入图像描述

0 投票
2 回答
2446 浏览

ios - 从容器视图 IOS 访问和操作父视图控制器视图

我正在制作一个应用程序,其中有一个容器视图,它是我的视图控制器屏幕的一半。从容器视图控制器的类中,我试图访问和操作位于容器视图之外的视图。(下图)

在此处输入图像描述

我正在尝试从容器视图类访问并将项目添加到滚动视图,如下所示:

怎么也行不通。我什至尝试从父母的“带有标签的视图”方法访问视图。

两者都不起作用。

我知道代码很好,因为当我将它移到父 vc 时,一切都按预期工作。不过,我需要能够从容器中操作视图。任何人都可以帮忙吗?

0 投票
1 回答
1950 浏览

ios - 容器视图在可见时重新加载数据

我有一个带有容器视图的 parentVC,我隐藏了这个容器。当我按下 parentVC 上的按钮时,容器变得可见。我想在 viewDidLoad 变得可见时重新加载它。

我尝试在 prepareForSegue 中创建子 vc 的实例并像这样重新加载 viewdidload:

我还尝试在子项中创建一个方法并在父项中调用它,但它没有被触发。

感谢您的帮助!

0 投票
1 回答
641 浏览

ios - 在 iOS 中实现完全自定义的 containerViewController 的类架构

我目前正在尝试构建自己的自定义 ContainerViewController。

我对 iOS ViewController 包含 API(在 iOS 5 中引入)和新的 iOS7 ViewController Transition API 非常熟悉。

在实现我的容器时,我尝试使用 UINavigationController 和 UITabBarController 正在使用的相同模式。

到目前为止,我的容器运行良好,并且可以正确使用动画和交互式过渡。

问题是,我将大量逻辑打包到我的 UIViewController 容器子类中。它符合<UIViewControllerContextTransitioning>并使用 iVar 来存储该协议方法返回的所有值。

动画和交互逻辑已经在另一个类中分离,第三方也能够使用类似于UINavigationControllerDelegateand的委托提供自己的转换UITabBarControllerDelegate

我现在要做的是将其外包UIViewControllerContextTransitioning给一个单独的类,以创建与 Apple 为其 containerVC 所做的相同的模块化。Apple 为传递给和方法UIViewControllerOneToOneTransitionContext的对象提供了一个(私有 API) 。所以他们没有为此使用他们的 UIViewController 子类。(这就是我现在所做的)id<UIViewControllerContextTransitioning>UIViewControllerAnimatedTransitioningUIViewControllerInteractiveTransitioning

到目前为止,我目前的结构很诱人,因为当转换逻辑在上下文中调用[updateInteractiveTransition:],[completeTransition:]等时,这些调用直接在我的 containerController 上进行,然后可以通过更新其视图中的其他元素来响应。(就像 UINavigationController 在您调用时所做的那样[updateInteractiveTransition:],它正在更新 NavigationBar 的内容(交叉淡入淡出))。

在另一个类中外包上下文转换逻辑意味着:

  • 提供从容器到上下文对象的容器堆栈中保存的视图控制器和框架等,因为上下文需要将它们提供给转换逻辑。
  • 从容器上的上下文对象调用转换回调,因为上下文对象是从转换逻辑接收它们的对象。

由于Apple使用这种类关系,我想它一定有一些优势。目前,我不知道是否应该保留我的实现,或者尝试使其像 Apple 提供的容器一样模块化。

另请参阅这个SO -我问过同样事情的问题。(更像是一个答案问题,对此感到抱歉:/)

当我们讨论这个话题时:是否可以让我的容器与 UIPercentDrivenInteractiveTransition 一起使用?文档说它会在关键帧中剪切由 transitionAnimator 执行的动画,并逐步自动“重播”动画过渡,所以我怀疑它是否可以与自定义容器一起使用。

谢谢你的帮助 !

0 投票
1 回答
83 浏览

ios - 从父级事件(按钮单击)上从 ContainerView 的所有 3 个子视图控制器获取数据

我有一个应用程序,它有一个 containerView,它根据单击三个不同选项卡之一来更改其视图。每个选项卡都包含不同的合同数据。

现在是我从这些选项卡中获取所有数据的时候了,但我不确定最好的方法。委派是 1:1,因此我认为不会起作用,因为我不能确定每个选项卡都已加载。NotificationCenter 也是如此,因为每个人都必须注册为观察者。

我考虑过遍历每个并传递消息“视图”,这将验证每个都已加载,然后触发通知或在每个视图内部调用一个方法来获取我需要的数据以便我结束有一个大的值字典。关于我可能的解决方案的任何其他想法或评论?

如果需要更多细节,请告诉我,这从一开始就是一个糟糕的设计,但我必须像这样实施它,因为在我开始在这家公司工作之前,客户已经批准了设计,他们花了几个星期才批准任何事情。