0323

01-学前需知



加法计算器代码

//MQViewController.h

/**
 IBAction:
 1> 能保证方法可以连线
 2> 相当于void,没有返回值
 IBOutlet:
 1> 能保证属性可以连线
 */
#import <UIKit/UIKit.h>
@interface MQViewController : UIViewController
@end


//MQViewController.m

#import "MQViewController.h"
// 类扩展,对类做私有扩展,但是和头文件有区别,在这声明的变量是私有的,别人不能访问,这样做的好处是将内部实现的方法保护起来,不要让外界知道;Xcode5建议所有的连线放到这个interface里面,不要放在.h文件中,保证封装性
@interface MQViewController ()
// 点击了计算按钮的时候就调用
- (IBAction)compute;
//属性代表成员变量
// num1用来控制第一个文本框
@property (nonatomic, weak) IBOutlet UITextField *num1;
// num2用来控制第二个文本框
@property (nonatomic, weak) IBOutlet UITextField *num2;
// sumLabel用来控制最右边的文本标签
@property (nonatomic, weak) IBOutlet UILabel *sumLabel;
@end

@implementation MQViewController
-(void)compute
{
//    1.取得文本输入框的值
    NSString *text1 = _num1.text;
//    等于     NSString *text1 = self.num1.text;
    NSString *text2 = self.num2.text;
//    2.相加
    int sum = text1.intValue + text2.intValue;
//    3.将结果显示到最右边的文本标签上
self.sumLabel.text = [NSString stringWithFormat:@"%d", sum];
//    4.退出键盘
//    谁把键盘叫出来就把键盘退出
//    响应者
//    第一响应者:叫出键盘的那个控件
//    不当第一响应者(就会把键盘退下)
//    [self.num1 resignFirstResponder]; //左边文本框键盘退下
//    [self.num2 resignFirstResponder]; //右边文本框键盘退下
//    等价于ViewControl的View结束编辑,上面缺点是多个文本框都要退出键盘
//    这种做法有前提,前提是self.view内部的控件调出键盘的
    [self.view endEditing:YES];
}
@end


02-加法计算器01-搭建UI界面监听按钮点击

1)iOS没有Java中的包名和命名空间的概念,为了区分不同人写的同名的类,它采用了类名前缀来去区分。

2)程序一运行会加载解析Main.storyborad,检测箭头指向哪个控制器(箭头意味着程序的入口),创建箭头所指向View的控制器,再由控制器创建所指向的UIView,再创建UIView里面的子空间,最后显示在用户眼前,这是软件的显示过程。

结论:

1)先有ViewController,再有View;

2)由ViewController监听View里的一切事件;

3)当一个方法要进行连线的时候必须以IBAction开头(返回IBAction属性);

03-加法计算器02-计算文本框的和

监听事件声明一个方法;

当要改变控件的状态、属性时,声明一个属性来改变这个控件。

04-常见控件预览

Bundle Identifier:app的唯一标识,能在手机中区别不同软件

A:cn.itcast.abc

B:cn.itcast.abc

先装A再装B,B会把A软件覆盖

为了保证不同公司的同名app都可以存在,规定Bundle Identifier要和公司有关(即Company Identifier)。

Company Identifier:公司的唯一标识,一般是公司域名的倒写。

Google地图:cn.google.map

360地图:   cn.360.map

Bundle Identifier不支持中文,若项目名是01-哈哈哈哈哈和01-加法计算器都是一样的,cn.itcast.-1-----

常见错误:

把ViewController内的属性误删,stroyboard内的连线还在,会导致编译时错误说调用那个属性的语句找不到那个属性,如果不调用误删属性,程序编译不报错,storyboard的那个属性连线还在,但运行时报错,setValue:forUndefinedKey:]: this class is not key value coding,表示连线出问题,控制器右击有感叹号的是有问题的连线,凡是连线有问题的都会报这个错;

 

XCode5建议我们把所有属性放在.m文件中,不需要向外界暴露你有哪些属性。

Xcode5建议所有的连线放到.m文件的@interfaceMQViewController ()里面,不要放在.h文件中,保证封装性

05-控件的常见属性

storyboard后添加的控件的view名称的最后面,显示在最上层。

06-按钮的基本使用01-移动和缩放

autolayout:自动布局会干扰代码

按钮控制改进前代码

//MQViewController.m

#import "MQViewController.h"
@interface MQViewController ()
- (IBAction)up;    // 上
- (IBAction)down;  // 下
- (IBAction)left;  // 左
- (IBAction)right; // 右
- (IBAction)big;    // 放大
- (IBAction)small;  // 缩小
//头像
@property (nonatomic,weak) IBOutlet UIButton *head;
@end

@implementation MQViewController
#pragma mark 向上走
- (IBAction)up
{
//    OC不允许直接修改 对象的 结构体属性的 成员
//    允许直接修改 对象的 结构体属性
//    获取值 -> 修改值 -> 赋给值
    CGRect tempFrame = self.head.frame;
    tempFrame.origin.y -= 10;
    self.head.frame = tempFrame;
}
#pragma mark 向下走
- (IBAction)down
{
    CGRect tempFrame = self.head.frame;
    tempFrame.origin.y += 10;
    self.head.frame = tempFrame;
}
#pragma mark 向左走
- (IBAction)left
{
    CGRect tempFrame = self.head.frame;
    tempFrame.origin.x -= 10;
    self.head.frame = tempFrame;
}
#pragma mark 向右走
- (IBAction)right
{
    CGRect tempFrame = self.head.frame;
    tempFrame.origin.x += 10;
    self.head.frame = tempFrame;
}
#pragma mark 放大
- (IBAction)big
{
//    1.取出原来属性
    CGRect tempFrame = self.head.frame;
//    2.改变临时属性,需要去掉autolayout
    tempFrame.size.width += 20;
    tempFrame.size.height += 20;
//    3.用临时属性覆盖原来的属性
    self.head.frame = tempFrame;
}
#pragma mark 缩小
- (IBAction)small
{
    CGRect tempFrame = self.head.frame;
    tempFrame.size.width -= 20;
    tempFrame.size.height -= 20;
    self.head.frame = tempFrame;
} 
@end

经典错误:

-[MJViewContro;;er up]:unrecognizedselector sent to instance 0x8c50af0

某个对象没有实现某个方法,误删方法


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值