由于xib中的子控件不能连线,如果连线后在别的viewController里面加载xib程序就会crash,情况如:使用loadNibNamed加载xib后,程序crash
给xib中的子控件赋值有两种方法:
1、通过UIview的subviews来获取想要赋值的子控件,然后给获取到的控件赋值就行:
UIImageView *imageView = appInfoView.subviews[2]; imageView.image = [UIImage imageNamed:@"icon_00"];
上面的代码中的appInfoView是xib中的一个view的实例,里面有一个image View子控件,一个button子控件和一个Label子控件,其中imageView子控件在最后。
subviews是UIview的一个属性,类型为NSArray ,用来存放UIview的子控件,通过subviews的getter方法可以得到view中的所有子控件的集合,集合的第二个索引值存放有xib中的view的imageView子控件,拿到子控件后给它赋值就行。
2、通过Tag来获取子控件,再赋值:
UILabel *label = [appInfoView viewWithTag:12]; label.text = @"appName";
在xib中设置子控件的Tag值,通过UIview的方法viewWithTag:来获取想要的子控件;
在上面的代码的程序中,xib中的view的一个label的子控件的Tag值被设置为12,通过方法viewWithTag:12就能得到label子控件,赋值为appName。
原文:http://www.cnblogs.com/panxiaochun/p/5023757.html