storyboard设置IBOutlet和IBAction
前面说过,storyboard隐式地生成了很多代码
比如不用storyboard时,要生成一个WebView的控件,需要写:
- (void)viewDidLoad
{
[super viewDidLoad];
self.webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
NSURLRequest *request =[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.baidu.com"]];
[self.view addSubview: self.webView];
[self.webView loadRequest:request];
}
用了storyboard以后,WebView控件会自动创建出来。问题是,在ViewController里,需要拿到这个WebView的引用,才能写代码。所以需要通过拉线,把WebView拉成IBOutlet,代码变成:
- (void)viewDidLoad
{
[super viewDidLoad];
NSURLRequest *request =[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.baidu.com"]];
[self.webView loadRequest:request];
}
道理和Android里的findViewById()是一样的,只是ID绑定的动作,在storyboard里拉线的时候就隐式完成了
另外,对control控件,比如button等,本来也需要coding来绑定事件和动作:
- (void)viewDidLoad
{
[super viewDidLoad];
[self.btnCooking addTarget:self action:@selector(pressCooking:) forControlEvents:UIControlEventTouchUpInside];
}
用storyboard的话,也是通过拉线完成
所以,无论是初始化view,还是设置action,不管是否使用storyboard,道理都是一样的。只是storyboard隐式写了很多代码,开发者需要写的代码就减少了
刚接触IOS开发,不知上面的理解是否有错,请高手指正,谢谢