如何通过编写 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 文件?的主要内容,如果未能解决你的问题,请参考以下文章