程序日志--ios“文字长度--button与label的交互”程序

来源:互联网 发布:工程项目优化管理ppt 编辑:程序博客网 时间:2024/06/05 17:59

我的学习日志003:“文字长度--button与label的交互”程序

交代一下我做程序的工具:mac os x虚拟机10.9.3         Xcode6         百度^-^         参考书iPhone30天精通(本书已经过时,但是还有一定的参考价值,可以引导正确的学习方向)。


没什么新的知识点,直接放步骤和代码。


XCode新建SingleView程序,viewControllor.h代码如下:

#import <UIKit/UIKit.h>

#import<Foundation/Foundation.h>

@interface viewController:UIViewController{

              IBOutlet UITextField *textField;

              IBOutlet UILabel *label;

}

@property(nonatomic,retain) UITextField *textField;

@property(nonatomic,retain) UILabel *label;

-(IBAction)Click;

@end

viewControllor.m文件

#import "viewController.h"

@implementation viewController

@systhesize textField,label;

-(void)viewDidLoad{

              [super viewDidLoad];

              label.text = @"请输入文字";

}

-(IBAction)Click{

            //这个方法是每一次点击button的时候调用的

              int count = textField.text.length;

              if(count>20){

                          label.text = @"输入的含空格和标点符号在内的文字超出20个";

                          textField.text = NULL;

             }

              else{

                          NSString *result = [NSString stringWithFormat:@"输入的文字个数为%d",count];

                          label.text = result;

                          textField.text = NULL;

             }

}

-(void)didReceiveMemoryWarning{

              [super didReceivedMemoryWarning];

}

storyboared处理:

首先要创建textField,button,label控件,因为前面的代码已经创建了这几个控件的对象了,然后选分别中每一个控件,按住ctrl键,鼠标左键拖向.h文件里面的相应的对象。

运行就OK了。这一步可能有不懂得,直接上图,看图自己操作就应该可以了,不会这种方法的注意图中的细节。



说一下我自己遇到的问题与不理解的地方:

遇到的问题:

1.运行的时候遇到警告:The simulator can't be launched.....大概就是说我模拟器别的程序还用着呢,我怎么可以再运行别的程序呢。这种时候只要强制关一下XCode就可以了,

强制关闭快捷键是commend+Q(虚拟机没有commend按键,win键代替即可)。

2.我在写viewController.h文件的时候忘了加上"#import<Foundation/Foundation.h>"这句话,导致我的程序出现“Thread1:signalSIGABRT...”这样的警告,所以以后写程序的时候要细心。

3.在打开程序的时候XCode还警告我“No signing identity dound”这是一个签名警告,意思就是没有签名标识。如果是用模拟器调程序的话没有关系,可以不用管它。

待解决的知识点:

@prperty与@systhesize

我在我的第二篇日志里面总结了一下,但是现在看来,还是太菜。http://blog.csdn.net/v7595v/article/details/46833209

现在只总结@prperty与@systhesize,贪多嚼不烂,如下:

Objective-C语言关键词,与@synthesize配对使用。xcode4.5以及以后的版本,@synthesize可以省略
下面以 Person 类为例:
在. h 文件中:
@interface Person : NSObject
{
NSString * _name;
NSString * _sex;
NSInteger _age;
}
@property NSString * name;
@property NSString * sex;
@property NSInteger age;
表示声明了三个属性: name,sex,age, 默认生成3个对应的 setter 和 getter 方法
在. m 文件中:
@implementation Person
@synthesize name = _name;
@synthesize sex = _sex;
@synthesize age = _age;
@end
表示实现3个 setter 和 getter 方法,其中 name = _name 表示说在 getter 和 setter 方法中操作的实例变量是_name,如果省略了_name,_age,_sex, 那么会在. h 文件中生成同名的实例变量 name,sex,age(注意:这里并没有下划线),此时生成的 setter 和 getter 方法所操作的实例变量是 name,sex,age, 所以_name,_sex,_age 并没有被操作.
在 ios5.0后,@synthesize也可以省略不写,此时在. h 文件中只写@ property 即可,编译器会自动生成相应的实例变量,实例变量的名字是属性名称前加下划线.


这是我在百度百科copy过来的资料,按照它的说法的话,我就可以去掉viewController.h文件里面的@interface{}里面定义的实例变量,同时去掉@systhesize,只写@property就可以了。But,去掉了@systhesize虽然没关系,但是去掉@interface{}里面的实例变量之后,用ctrl无法将storyboard和.h文件里面的@property相关联。所以只能加上@interface{}里面定义的实例变量。还有一点,我加入的实例变量是与@property修饰的变量名字是相同的,没有用"_"去区分,然而也没有错误,那我便暂时先按这种方便的方式去写代码。



IB 就是Interface Builed:

书上和网上总是说IB就是InterfaceBuiled,关于IBAction和IBOutlet我已经在我程序日志的第一篇里面解决了这一问题,http://blog.csdn.net/v7595v/article/details/46831265

什么是InterfaceBuiled?

看了百度百科http://baike.baidu.com/link?url=WUPoCb4zLKQuhj8NB46slu4phwAxGc0v56FyahESMEDkViA833E3zZQqUyqI-NULGwZHd-3sWuTziY3DCJqbea

IB再深究已无意义,了解一下作罢。




0 0
原创粉丝点击