如何通过编写 Objective-C 代码来动态更改 Interface Builder xib 文件?

Posted

技术标签:

【中文标题】如何通过编写 Objective-C 代码来动态更改 Interface Builder xib 文件?【英文标题】:How to dynamically change Interface Builder xib files by writing Objective-C code? 【发布时间】:2012-10-21 23:50:55 【问题描述】:

今天我正在为 ios 编写我的第一个“Hello World”应用程序。我想知道如何以类似于 android XML 布局文件或 XAML 的方式以编程方式操作 .xib 文件?我还希望 Interface Builder 动态显示更改。例如,我有一个.xib 文件"LoginPageView.xib",其中有我通过Interface Builder 构造函数添加的按钮和其他控件,然后我将此.xib 连接到.m"LoginPageViewController" 的私有class extension文件。现在我想以编程方式添加一个新按钮:UIButton *button = [[UIButton alloc] initWithCGRect:...]; 或者我想更改按钮的背景等等。

我知道的唯一方法是在 viewDidLoad 方法中实现它,但如果我这样做,我的更改将仅在程序运行时显示,我希望 Interface Builder 在编译之前动态显示这些更改。那么问题是在 Xcode IDE 中是否有某种方法可以实现这一点并说明如何做到这一点?

【问题讨论】:

【参考方案1】:

简短的回答是否定的,这是不可能的。长答案是,您可以通过对 .xib 文件格式(即 XML)进行逆向工程并弄清楚如何自己编写来实现这样的事情。这将比它的价值更麻烦。

【讨论】:

如果我在这里错了,请纠正我,但是一旦将 xib 编译为 nib,任何 XML 操作的尝试都不会被证明是轻浮的吗? 其实,@NSPostWhenIdle,我写了一个 XIB XML 阅读器。 XIB 编译时实际上并没有多少。 我推测 OP 是在询问关于 XIB 的预编译操作,所以被操作的文件仍然会被正常编译。

以上是关于如何通过编写 Objective-C 代码来动态更改 Interface Builder xib 文件?的主要内容,如果未能解决你的问题,请参考以下文章

论如何在 Objective-C 中优雅的使用常量

编写高质量iOS与OS X代码的52个有效方法

如何在Objective-C中动态分配指向对象的指针数组?

采用现代Objective-C

如何通过使用代码更改变量名称来动态使用变量

如何在 Objective-C 中使用 startMonitoringForRegion 扫描多个区域