博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从零开始:iOS(一)
阅读量:4985 次
发布时间:2019-06-12

本文共 3633 字,大约阅读时间需要 12 分钟。

前言:开博写这个系列,记录自己学习ios开发的过程.

我是以<objective-c 2.0程序设计>作为入门书籍开始的.

书中第一个例子是一个command line utility程序.(c#:console app)

#import 
int main(int argc, const char * argv[]){ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSLog (@"Hello World"); [pool drain]; return 0;}

xcode提示有错,NSAutoreleasePool 不可用.经过搜索得知Xcode4.2之后的版本中引入了ARC特性来自动管理内存.将代码修改如下.

(暂时不管 ARC是什么,书读到后面,没准就知道了,先把程序走过.)

#import 
int main(int argc, const char * argv[]){ @autoreleasepool { NSLog(@"Hello World"); } return 0; }

控制台成功输入:Hello World. 拿c#的开发经验看,这个#import与命名空间类似,NSLog与Console.Write类似,@autoreleasepool就先假想成using指令吧,这些都先不管.一个控制台程序,不太好看,起码得有个视图吧.于是New一个Project,选择Single View Applcation.

输入项目名称:HelloWorld,下一步完成创建. xcode左侧是展开的文件里,有ViewController_iPhone.xib,选中会出现一个iPhone视图.右下角,可以看到控件,鼠标停留有智能显示.拖动一个Lable控件到面板. 双击输入文字 "Hello World".选择iPhone模拟器,Run!

可以在模拟器里看到Hello World.到这里还是不满足,既然有文本框,按钮,那应该可以再多做点事.

将textbox,button拖入到视图,如图.

我想做的是,在文本框输入名字,点击按钮,更新 Hello为{you name},Hello.

如图,选中右上角,Editor选项中,中间那个.工作区会变成一边面板,一边代码.

接下来,选中文本框点击右键 选中Referencing Outlets,拖动到 ViewController.h文件里.操作如下.

(百度老师给出的信息是:Outlets里面显示的是你的属性, 以及连接着的目标.Referencing Outlets是你被连接到了别人的属性上面,先不管,就当是给这个控件赋了id值)

.h文件代码自动新增了两行.

@property (weak, nonatomic) IBOutlet UITextField *txtName;@property (strong, nonatomic) IBOutletCollection(UILabel) NSArray *lblMessage;

依旧是拖动,这次选中按钮,将 Touch Down拖到.h 代码里.

最终.h文件代码如下.

#import 
@interface ViewController : UIViewController@property (weak, nonatomic) IBOutlet UITextField *txtName;@property (strong, nonatomic) IBOutletCollection(UILabel) NSArray *lblMessage;- (IBAction)btnClick:(id)sender;@end

.m文件是.h的实现,选择ViewController.m, 添加代码如下.

#import "ViewController.h"@interface ViewController ()@end@implementation ViewController@synthesize txtName;@synthesize lblMessage;- (void)viewDidLoad{    [super viewDidLoad];    // Do any additional setup after loading the view, typically from a nib.}- (void)didReceiveMemoryWarning{    [super didReceiveMemoryWarning];    // Dispose of any resources that can be recreated.}- (IBAction)btnClick:(id)sender {    lblMessage.text = [txtName.text stringByAppendingString:@",Hello"];}@end

好,Run!

ok! 跑出来了.

但是感觉不对.虚拟键盘,出来了就不走了,有木有,很脑火.

请教下百度老师.找解决方案.

左侧文件列表选中.xib文件,还是拖控件!(不用吐槽,c#入门的时候也走这条路).

右下选中Tap Gesture Recogize主到 View 里,最终如图.

最终.h 代码如下:

#import 
@interface ViewController : UIViewController@property (weak,nonatomic) IBOutlet UITextField *txtName;@property (weak,nonatomic) IBOutlet UILabel *lblMessage;@property (strong,nonatomic) IBOutlet UITapGestureRecognizer *tg;- (IBAction)btnClick:(id)sender;@end

并修改.m 代码最终如下:

#import "ViewController.h" @interface ViewController () @end @implementation ViewController @synthesize txtName; @synthesize lblMessage; @synthesize tg; - (void)viewDidLoad {     [super viewDidLoad];     tg = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKb:)];     tg.cancelsTouchesInView = NO;     [self.view addGestureRecognizer:tg];     // Do any additional setup after loading the view, typically from a nib. } - (void)didReceiveMemoryWarning {     [super didReceiveMemoryWarning];     // Dispose of any resources that can be recreated. } - (IBAction)btnClick:(id)sender {     lblMessage.text = [txtName.text stringByAppendingString:@",Hello"]; } -(void) hideKb:(UITapGestureRecognizer*) t{     [txtName resignFirstResponder]; } @end

 

Run! 完成输入后点击空白地方,键盘会消失.

要睡了, 我从1点写到4点,你敢信! 困死.

 

这是我第一次写博文,我希望记录我学习的过程,也希望找到一个伴一起学习,一起研究. 因为总有一些人,比如同学,比如长辈..等等你不愿意去问,不愿意去打捞他们.来找我吧,闭门造车是件很痛苦的事,愿与你一起进步.

 

再吐槽下网络上的一些博文,既然你有心分享,为什么不讲清楚.

  

转载于:https://www.cnblogs.com/igqtdh/archive/2013/04/26/3043919.html

你可能感兴趣的文章
设置遮罩层
查看>>
Catalyst 3850 升级-1
查看>>
static
查看>>
python模块之time模块
查看>>
layui中的html怎样接收后台的值,layui框架与SSM前后台交互的方法
查看>>
Skulpt在线模拟运行Python工具
查看>>
287.软件测试概述
查看>>
297.白盒测试
查看>>
新闻客户端的突破与创新
查看>>
网络通信引擎ICE的使用
查看>>
js滚动事件实现滚动触底加载
查看>>
千万级并发实现的秘密:内核不是解决方案,而是问题所在!
查看>>
2222
查看>>
zynq -- cannot find -lxil
查看>>
hdu 4658 Integer Partition
查看>>
一个接口能否继承另一个接口?一个抽象类能否实现一个接口?
查看>>
C#基础知识系列八(const和readonly关键字)
查看>>
[转]Axis2创建WebService实例
查看>>
算法: 最长回文子串 二层动态规划
查看>>
硬件综合实习——51单片机四则运算带括号计算器
查看>>