storyboard文件的认识
- 用来描述软件界面
- 默认情况下,程序一启动就会加载Main.storyboard
- 加载storyboard时,会首先创建和显示箭头所指的控制器界面
IBAction和IBOutlet
- IBAction:
- 本质就是void
- 能让方法具备连线的功能
- IBOutlet
- 能让属性具备连线的功能
storyboard连线容易出现的问题
- 连接的方法代码被删掉,但是连线没有去掉
- 可能会出现方法找不到错误
- unrecognized selector sent to instance
- 连接的属性代码被删掉,但是连线没有去掉
- setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key
UIViewController(控制器)的认识
- 一个控制器负责管理一个大界面
- 控制器负责界面的创建、事件处理等
类扩展
- 格式
@interface 类名()
/** 属性、方法的声明 */
@end
- 作用
- 为某个类增加额外的属性和方法声明
- 可以写在.h和.m文件中
项目属性
- Product Name
- 软件名称、产品名称、项目名称
- Organization Name
- 公司名称、组织名称
- Organization Identifier
- 公司的唯一标识
- 一般是公司域名的反写,比如com.520it
- Bundle Identifier
- 软件的唯一标识
- 一般是Organization Identifier + Product Name
外部文件添加到项目时的正确勾选
常见问题
- 项目里面的某个.m文件无法使用
- 检查:Build Phases -> Compile Sources
- 项目里面的某个资源文件(比如plist、音频等)无法使用
- 检查:Build Phases -> Copy Bundle Resources
模型
- 什么是模型?
- 专门用来存放数据的对象
- 一般都是一些直接继承自NSObject的纯对象
- 内部会提供一些属性来存放数据
一个控件看不见有哪些可能?
- 宽度或者高度其实为0
- 位置不对(比如是个负数或者超大的数,已经超出屏幕)
- hidden == YES
- alpha <= 0.01
- 没有设置背景色、没有设置内容
- 可能是文字颜色和背景色一样
代码添加按钮
- (void)addButtonWithImage:(NSString *)image highImage:(NSString *)highImage disableImage:(NSString *)disableImage frame:(CGRect)frame tag:(NSInteger)tag action:(SEL)action
{
// 创建按钮
UIButton *btn = [[UIButton alloc] init];
// 设置背景图片
[btn setBackgroundImage:[UIImage imageNamed:image] forState:UIControlStateNormal];
[btn setBackgroundImage:[UIImage imageNamed:highImage] forState:UIControlStateHighlighted];
[btn setBackgroundImage:[UIImage imageNamed:disableImage] forState:UIControlStateDisabled];
// 设置位置和尺寸
btn.frame = frame;
// 监听按钮点击
[btn addTarget:self action:action forControlEvents:UIControlEventTouchUpInside];
// 绑定tag标记
btn.tag = tag;
// 添加按钮
[self.view addSubview:btn];
}
- (void)viewDidLoad
{
[super viewDidLoad];
[self addButtonWithImage:@"add" highImage:@"add_highlighted" disableImage:@"add_disabled" frame:CGRectMake(30, 30, 50, 50) tag:10 action:@selector(add)];
}
xib文件的加载
加载xib文件
方式1
Test.xib --编译--> Test.nib
NSArray *objs = [[NSBundle mainBundle] loadNibNamed:@"Test" owner:nil options:nil];
[self.view addSubview:objs[1]];
方式2
一个UINib对象就代表一个xib文件
UINib *nib = [UINib nibWithNibName:@"Test" bundle:[NSBundle mainBundle]];
一般情况下,bundle参数传nil,默认就是mainBundle
UINib *nib = [UINib nibWithNibName:@"Test" bundle:nil];
NSArray *objs = [nib instantiateWithOwner:nil options:nil];
[self.view addSubview:[objs lastObject]];
第一周作业(遇到的坑)
- 导入txt文件后读出来的始终是乱码 各种蛋疼 最后发现是文本编码没弄对
- Xcode时常报错找不到某某key,其实就是删除了该控件从storyboard的代码,但是忘记删除留在storyboard上的控件连线
满地打滚卖萌求赞,如果本文帮助到你,轻点下方的红心,给作者君增加更新的动力。