【问题标题】:Xcode - How to connect XIB to ViewController ClassXcode - 如何将 XIB 连接到 ViewController 类
【发布时间】:2023-03-21 09:56:01
【问题描述】:

我首先创建了我的 TestViewController.h 和 *.m。之后是我的 TestView.xib。

现在我需要告诉我的 xib:“是的,请将 TestViewController 类作为我的文件所有者”。

我打开我的 xib,转到其 fileOwner 的身份检查器并在“自定义类”TestViewController 下选择。

但这似乎还不够——当我打开 TestView.xib,然后选择“Assistent Editor View”时,它应该会在分屏的右侧显示相应的 ViewController——在我的例子中是“TestViewController 。H”。但事实并非如此!

是否有必要以任何方式将 xib 绑定​​到它的视图控制器,方法是将线条拖到文件中,就像使用插座和操作一样?

【问题讨论】:

    标签: objective-c xcode viewcontroller


    【解决方案1】:

    单击以选择 xib。现在,选择文件的所有者。在右侧的属性面板中,选择第三个选项卡“Identity Inspector”。有一个名为 Custom Class 的标题。在那里给出您的视图控制器的名称。在此之后,您可以将元素与文件的所有者联系起来。

    【讨论】:

    • 您的意思是我应该只在文件菜单中选择文件,然后单击“身份检查器选项卡”?跟我说“没有选择”。
    • 这是因为 xib 被取消选择了。再次单击文件所有者以激活身份检查器。
    • 我打开我的 xib,转到其 fileOwner 的 Identity Inspector 并在“Custem Class”下选择 TestViewController。但这似乎还不够——当我打开 TestView.xib,然后选择“辅助编辑器视图”时,它应该会在分屏的右侧显示相应的 ViewController——在我的例子中是“TestViewController.h” .但事实并非如此!
    • 这是最好的答案
    • 这应该被选为接受的答案。这是最好的答案。
    【解决方案2】:

    我想我在创建 UIViewController 子类时遇到了这种情况,但在创建时忘记检查“with .xib for UI”。后来我又回去单独创建了.xib。

    这是将新 UIViewController 和 .xib 关联起来的更一步一步的方法。

    1. 在 IB 左侧窗格的占位符下选择文件所有者。在 Property Inspector(IB 的右窗格)中,选择第三个选项卡并编辑“Custom Class”下的“Class”作为新 UIViewController 子类的名称。

    2. 然后在左窗格中按住 ctrl 单击或右键单击 File's Owner,然后在左窗格的 Objects 部分中的顶层视图中画一条线。选择“查看”插座,您就完成了。

    您现在应该能够设置其他出口和操作。您已准备好在代码中实例化您的视图控制器并使用 initWithNibName 和您的 nib 名称来加载它。

    【讨论】:

    • 弗里克。最新版本的 xcode 中没有“with .xib for UI”....
    【解决方案3】:

    在视图控制器中创建一个“视图”出口(UIView)并将其标记为 IBOutlet。 (当您在 xcode 中创建文件时使用正确的默认值/模式时,该属性应该已经存在。) 在 Interface Builder 中,在主视图和视图控制器/文件所有者的视图属性/出口之间创建一个链接。 只是为了全貌:在创建/分配视图控制器时,您应该使用适当的 XIB 文件对其进行初始化。这正是视图控制器对象绑定到从 XIB 文件生成的视图的时刻。

    【讨论】:

    • 感谢赫尔曼,但这正是我想要实现的目标。手动完成。当我自动创建它们时,h 文件只对 xib 没有任何说明。但是还是有联系的。我试图在不创建属性或方法实例的情况下获得这种连接。我试图了解绑定背后的机制。
    • 您到底想手动创建什么?您想在不使用 Interface Builder 和 XIB 文件的情况下以编程方式创建完整视图吗?
    • 或者你想在一个地方创建视图控制器,然后创建一个 vew vom XIB,然后将该视图与这个已经存在的视图控制器相关联?为什么?你最终想要达到什么目的?
    • 感谢赫尔曼的帮助。最终我最终成功了。在这个线程上所说的一切都是完全正确的。我不得不重新启动 xCode,它运行良好。奇怪的一个!
    • 您还需要单击文件的所有者并将其类设置为您的控制器的类。然后一个视图出口将出现在其中,您可以将其连接到您的 xib 中的视图
    【解决方案4】:

    1) 首先就像每个人说的一样,在 File's Owner 类中给出视图控制器名称

    2) 选择 File's Owner 从那里拖一条线来查看这两个连接

    3) 创建一个View控制器的实例并将其添加到window中,代码sn-p如下,

    MyViewController *controller = [[MyViewController alloc] initWithNibName:@"MyView" bundle:nil];
    

    4)最后将视图控制器的视图作为子视图添加到window.to中,编码如下,

    [window addSubview:[controller view]];
    

    在 appdelegate 上尝试以下 sn-p

    - (void)applicationDidFinishLaunching:(UIApplication *)application {    
    
        // Override point for customization after application launch
        [window makeKeyAndVisible];
    
        MyViewController *controller = [[MyViewController alloc] initWithNibName:@"MyView" bundle:nil];
        [window addSubview:[controller view]];
     }
    

    5) 使用下面的sn-p来最大化view到window的大小,这样就不会出现gap了

    [controller.view setFrame:[[UIScreen mainScreen] applicationFrame]];
    

    现在您将看到您所期望的视图控制器...

    我希望这会有所帮助....

    【讨论】:

      【解决方案5】:

      是的,您必须从界面生成器将视图属性添加到该视图控制器的文件所有者:

      【讨论】:

      • 在添加类后进入 TestView 的界面构建器。您会在 xib 中找到文件所有者,只需单击它并在属性列表选项中查看所有选项,您将在那里找到视图与文件所有者一起添加到该视图...
      【解决方案6】:

      选择您的文件所有者进入身份检查器窗口,并将文件所有者的类名更改为您的视图 .h 文件,这将连接。

      【讨论】:

      • 这不正是我所做的吗?
      • 我的问题是 xcode 没有得到连接。当我一次性创建一个带有 Xib 的 ViewController 时,它就可以工作了。但我无法手动将 viewcontroller 连接到它的 xib。
      猜你喜欢
      • 2013-10-18
      • 2012-03-28
      • 2017-05-19
      • 2014-11-29
      • 2015-10-01
      • 2013-03-12
      • 2020-06-02
      • 2013-03-02
      • 2017-08-20
      相关资源
      最近更新 更多