Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c Xcode-如何将XIB连接到ViewController类_Objective C_Xcode_Viewcontroller - Fatal编程技术网

Objective c Xcode-如何将XIB连接到ViewController类

Objective c Xcode-如何将XIB连接到ViewController类,objective-c,xcode,viewcontroller,Objective C,Xcode,Viewcontroller,我首先创建了TestViewController.h和*.m。之后我的TestView.xib 现在我需要告诉我的xib:“是的,请将类TestViewController作为我的文件所有者” 我打开我的xib,转到其文件所有者的身份检查器,并在“Custom Class”TestViewController下进行选择 但这似乎还不够——当我打开TestView.xib,然后选择“辅助编辑器视图”时,它应该在分割屏幕的右侧显示相应的ViewController——在我的例子中是“TestView

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

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


我打开我的xib,转到其文件所有者的身份检查器,并在“Custom Class”TestViewController下进行选择

但这似乎还不够——当我打开TestView.xib,然后选择“辅助编辑器视图”时,它应该在分割屏幕的右侧显示相应的ViewController——在我的例子中是“TestViewController.h”。但事实并非如此


是否有必要以任何方式将xib绑定到其viewcontroller,方法是像使用Outlet和actions那样将线拖动到文件?

是的,您必须从interface builder向该视图控制器的文件所有者添加视图属性:

选择文件所有者转到identity inspector窗口,并将文件所有者的类名更改为将要连接的view.h文件。

单击以选择xib。现在,选择文件的所有者。在右侧的属性面板中,选择第三个选项卡“标识检查器”。有一个名为自定义类的标题。在那里输入视图控制器的名称。在此之后,您可以将元素与文件的所有者连接起来


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

1)首先,正如每个人所说的,在文件所有者的类中指定视图控制器的名称

2) 选择文件的所有者从那里拖出一条线来查看这条线连接了两者

3) 创建视图控制器的实例并将其添加到窗口中,代码段如下所示:

MyViewController *controller = [[MyViewController alloc] initWithNibName:@"MyView" bundle:nil];
[window addSubview:[controller view]];
4) 最后,将视图控制器的视图作为子视图添加到窗口中

MyViewController *controller = [[MyViewController alloc] initWithNibName:@"MyView" bundle:nil];
[window addSubview:[controller view]];
在appdelegate上尝试以下代码段

- (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) 使用以下代码段最大化“视图到窗口”的大小,以便不会出现裂口

[controller.view setFrame:[[UIScreen mainScreen] applicationFrame]];
现在您将看到您预期的视图控制器


我希望这能有所帮助……

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

这里有一种更逐步的方法来关联新的UIViewController和.xib

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

  • 然后在左窗格中按住ctrl键单击或右键单击文件的所有者,并在左窗格的“对象”部分中绘制一条到顶层视图的线。选择“查看”插座,即可完成操作


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

    这不是我所做的吗?我的问题是xcode没有获得连接。当我一次性创建带有Xib的ViewController时,它可以工作。但是我无法手动将viewcontroller连接到其xib。您的意思是我应该在“文件”菜单中选择该文件,然后单击“身份检查器”选项卡?对我来说,这是“没有选择”。这是因为xib被取消选择。再次单击文件所有者以激活标识检查器。我打开我的xib,转到其文件所有者的标识检查器,并在“Custem Class”TestViewController下进行选择。但这似乎还不够——当我打开TestView.xib,然后选择“辅助编辑器视图”时,它应该在分割屏幕的右侧显示相应的ViewController——在我的例子中是“TestViewController.h”。但事实并非如此!这是最好的答案。这应该被选为公认的答案。这是最好的答案。添加类后,进入TestView的接口生成器。。您将在xib中找到文件所有者只需单击该选项,并在属性列表选项中查看检查您将在那里找到的所有选项视图添加到文件所有者的视图中…感谢Hermann,但这正是我试图实现的目标。手动操作。当我自动创建它们时,h文件只是对xib一无所知。但还是有联系的。我试图在不创建属性或方法实例的情况下获得此连接。我试图理解绑定背后的机制。您到底想要手动创建什么?是否希望在不使用Interface Builder和XIB文件的情况下以编程方式创建完整视图?还是希望在一个位置创建视图控制器,然后创建vew vom XIB,然后将该视图与此已存在的视图控制器关联?为什么?你到底想实现什么?谢谢赫尔曼的帮助。最终我成功了。这篇文章所说的一切都是完全正确的。我不得不重新启动xCode,它工作得很好。奇怪的一个!您还需要单击文件的所有者并将其类设置为控制器的类。然后一个视图出口将出现在其中,您可以将其连接到您的xibfrick中的视图。最新版本的xcode中没有“with.xib for UI…”。。。。