`

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开发,不知上面的理解是否有错,请高手指正,谢谢

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics