刚开始学iOS开发的时候,经常要跟interface builder打交道,乍一看拖控件是挺方便的,跟以前做C#开发类似,但是Xcode比较恶心的一点是,拖完控件之后,还得手动地在Connections Inspector中绑定控件和变量的关系,事件的绑定也在这里完成。当然如果这些都有一个源代码给我们看到,倒也还好(比如C#中的xx.designer.cs),但是Xcode又全部给扔到了.xib文件中,这是一个XML文件,看起来并不像看代码那么直觉,所以是一件比较蛋疼的事情。
另一方面,如果使用interface builder,针对不同的iOS版本,不同的orientation(屏幕方向),我们可能需要设计多套UI,这在开发和维护上都是一件比较蛋疼的事情。
因此,我们考虑一种更“程序员”的方式来做这些事情:抛开Interface Builder,在代码中创建控件,定义布局,并添加事件处理机制。
下面的例子演示动态添加一个按钮以及绑定点击事件。
首先打开Xcode,创建一个新项目,可以是Single View,也可以是Empty的,我们以Single View的为例。
虽然创建的项目中有一个MainStoryboard.storyboard,并且绑定了interface builder,但我们不会去用它。我们直接修改ViewController.m的viewDidLoad方法,修改后代码如下:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any addit