【问题标题】:Create entire UIView within UIViewController在 UIViewController 中创建整个 UIView
【发布时间】:2012-05-22 19:17:43
【问题描述】:

我有一个 UIViewController (controller1),它在 UIView 上显示一些 UIbuttons。当单击其中一个按钮时,我想实例化第二个 UIViewController(controller2,它是一个完全不同的控制器类),然后它将以编程方式创建一些 UIViews 并将它们添加到由 controller1 管理的 UIViews 之一。

所以,在控制器 1 中,我想要以下代码:

- (void) someButtonPressed: (id)sender
{
    ViewController2* controller2 = [ [ ViewController2 alloc ] initWithNibName:nil bundle:nil ];
}

然后我想以编程方式在 controller2 中创建额外的 UIView。理想情况下,我不会在 controller1 中再添加任何代码行(以添加视图等)。我真的很想创建所有视图并将它们从 controller2 代码中添加到现有视图中。

我可以这样做吗?怎么做?我试过简单地将以下代码放在控制器 2 中:

- (void)loadView
{

    NSLog(@"HPSViewEditorViewController loadView");

}

但它没有被调用。

我想将控制器 2 的整个 UIView 层次结构封装在控制器 2 代码中,并且不想将控制器 1 与控制器 2 实例化以外的任何东西“混淆”。

谢谢。

【问题讨论】:

    标签: objective-c uiview uiviewcontroller


    【解决方案1】:

    我会尝试类似的东西

    [viewController1 presentModalViewController:viewController2 animated:YES];
    

    这可以解决问题...

    【讨论】:

    • 太棒了,很享受。也不需要 loadView 。非常感谢。
    • Anselm - 小问题;当显示第二个控制器的视图时,整个屏幕变黑。我希望以前视图的内容“显示”属于 controller2 的视图。知道这是否可能吗?
    • 我不是 100% 确定,但我会尝试给背景 UIColor clearcolor... :-)
    【解决方案2】:

    来自UIViewController Class Reference

    视图控制器在其视图属性被请求但当前为 nil 时调用此方法。此方法加载或创建视图并将其分配给视图属性。

    -loadView 在 controller2.view 被引用之前不会被调用。

    【讨论】:

    • 那么,有什么方法可以在 controller2 中引用它吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2011-06-08
    相关资源
    最近更新 更多