xcode8创建一个新的工程,对其中的任何东西都没有改动,有三个自动生成的文件--Main.storyboard、ViewController.h、ViewController.m。
这个问题源于我想使用代码在Main.storyboard中一个ViewContrel添加一些控件(button,text,label..),但是ViewController.m中编写了添加一个button的代码,代码如下:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.button = [[UIButton alloc] initWithFrame:CGRectMake(0, 100, [[UIScreen mainScreen] bounds].size.width, 20)];
[self.button setTitle:@"touch me" forState:UIControlStateNormal];
[self.button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[self.view addSubview:self.button];
[self.button addTarget:self action:@selector(clickMe:) forControlEvents:UIControlEventTouchUpInside];
}
这样看起来是写完了一个button控件的展示,迫不及待的在模拟机上运行,结果是一个什么都没有的界面。既然代码编译没有出错,说明button是确确实实的生成ok的,猜测可能出现的问题是这个ViewController没有对应到Main.storyboard具体的View Controller,展示的界面才没有预想的button出现。
解决:
将Main.storyboard中每一个View Controller对应到具体的ViewController类中,在这个类中代码实现的控件就会展示到想要的界面。
对应方式为,在上图右侧用长方形圈起来的部分,将Class设置为ViewController(想对应起来的viewController.m/h中的类);再次编译运行,会达到预期的结果。