【问题标题】:iOS: Handling subview with another controlleriOS:使用另一个控制器处理子视图
【发布时间】:2013-06-27 09:34:25
【问题描述】:

我有 MainViewController 和 xib,我在其中创建了两个 subviews 并在 MainViewController 中将它们与 IBOutlets 连接起来。我需要这样,因为MainViewController 处理用户对subviews 的大小调整。

现在我想为子视图创建两个带有 xib 的 ViewController,这样我就可以用内容填充子视图,而无需考虑 MainViewController 对它们做了什么。

怎么做?

我从创建两个 SubviewControllers 开始,在 MainViewController 重写的初始化程序中初始化。但我不知道如何将SubviewControllerssubviews 连接起来,尤其是subviews 都出现在不止一个xib 中-在主xib 中它们是空的,而在“他们的”xib 中具有内容。

【问题讨论】:

    标签: ios cocoa-touch uiviewcontroller xib


    【解决方案1】:

    要在另一个 viewController(NextViewController) 中使用 viewController(MainViewController) 的 UIView,您必须在 NextViewController 中将 MainViewController 添加为 NextViewController 的子项,类似这样..

    MainViewController * child = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil];
    [self.view addSubview:child.subView1];
    [self addChildViewController:child];
    [child release];//for NON ARC
    

    【讨论】:

    • 我这样做了,子视图显示了,但我在主 xib 中看不到它。
    • “我在主 xib 中看不到它”是什么意思。
    • 正如我在问题中所说的,我想要不止一个 xib。一个是主要的(由 MainViewController 拥有),我在其中向子视图添加约束,而在另一个(由 SubViewController 拥有)中,我想添加子视图的内容。按照您的说明进行操作后,我在主 xib 中看不到子视图,因此无法在 Interface Builder 中添加约束。
    • 在界面生成器中它不能消失。检查这个子视图是否被错误地删除了?
    • 当您通过代码添加视图时,它永远不会影响界面构建器。无法通过编码更改界面生成器或 xib。当您编写代码来更改控件(UIView、UIButton 等)的属性时,属性更改会一直保留到应用程序运行,但 xib 不会反映这些属性更改。
    猜你喜欢
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多