gpt4 book ai didi

objective-c - 我可以将非 xib 应用程序转换为使用 xibs 吗?

转载 作者:行者123 更新时间:2023-11-29 05:06:50 25 4
gpt4 key购买 nike

我有一个正在运行的应用程序,其中包含一个导航 Controller 、两个 View Controller 、两个 View 、一个模型对象,并且没有 xib 文件。 View 是以编程方式创建的。现在我想使用 IB 和 xib 文件构建相同的应用程序。有谁知道解释如何添加 xib 文件并删除它们替换的程序语句的文章?如果没有,那么有什么东西可以讨论 xib 库元素和程序语句之间的等价性?

我为什么要这样做?因为我试图了解 xib 文件的作用以及它们如何与程序语句交互,并且我认为这将是一个很好的学习练习。我尝试了一下,但无法编译。事实上,每次我使用 xib 文件时,除了下面的教科书示例之外,我都会无可救药地陷入无法编译或编译后不起作用的代码中。所以我一定有一些基本的误解。我需要弄清楚 xib 文件在幕后做了什么。它们看起来可能非常强大,但如果我不明白它们在做什么,我就不会使用它们。

我在堆栈溢出的其他地方读到它们是编译 View (或类似的东西)的序列化版本。我从概念上理解这一点。我非常熟悉 Python 的 pickle 文件。但这在实践中并不能解释太多。

最佳答案

nib/xib 包含创建对象并将对象连接在一起所需的信息。基本上,它包含它所包含的对象的实例变量和类信息。要加载一个,您可以使用 UINib 类(Mac OS X 中的 NSNib)或 NSBundle loadNib... 方法。 NSBundle 的方法更容易使用,我建议使用它们,除非您会多次加载 Nib 。对于 iOS,您通常会使用 [[NSBundle mainBundle] loadNibNamed:@"NibNameWithoutExtension"owner:self options:nil];。所有者不必是自己。它是 IB 中“文件所有者”对象表示的对象,并将接收与该对象建立的任何连接。 options 参数可用于获取 nib 中的顶级对象,但您通常使用 Outlet。加载 nib 时,会分配并实例化其中的对象(使用 initWithCoder:),并使用 setter 方法或直接设置实例变量来创建连接。

关于objective-c - 我可以将非 xib 应用程序转换为使用 xibs 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4709217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com