ios - UIStackView 中包含多个 ViewController

标签 ios objective-c viewcontroller containment

我有一个UIStackView,我正在动态添加包含的UIViewControllers,这是我的代码;

[self addChildViewController:driverForm];
[self addChildViewController:marketingView];

[self.stackView insertArrangedSubview:driverForm.view atIndex:0];
[self.stackView insertArrangedSubview:marketingView.view atIndex:1];

[driverForm didMoveToParentViewController:self];
[marketingView didMoveToParentViewController:self];

阅读文档后它指出我必须调用 didMoveToParentViewController

我面临的问题是,最终 UIViewController 上的操作没有被调用,但第一个 ViewController 会调用。如果我交换这些回合,第一个有效,最后一个无效。

最佳答案

只需像这样将 ViewController 的 View 添加到 UIStackView 中:

yourStackView.addArrangedSubview(yourViewController.view)

此外,您不必担心 View 为 nil,因为它总是返回 UIView!

请注意,顺序是相反的,所以最后一个出现在最前面。为了解决这个问题,假设您有一个 View Controller 数组,您可以使用 stride 反向遍历您的数组并将 View Controller 添加到您的堆栈。

关于ios - UIStackView 中包含多个 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37023023/

相关文章:

objective-c - Objective-C:虽然可以完美编译,但应用程序仅运行一次

iphone - 无需用户交互的推送通知

ios - 按钮的快速图像太大

objective-c - 如何更改 NavigationController 的 rootviewcontroller?

objective-c - 为什么 NSDateFormatter 返回的日期相差一小时?

swift presentViewController

ios - 查看 Controller 和自身

ios - 列表中列表的 RestKit 对象映射

ios - 为什么保留计数在 Debug模式和运行模式下不同?

c++ - 如何自定义wxApp实现协议(protocol)?