ios基础之入门(一)
最近找到了一个可以接触ios开发的职位,可以系统的学习和练习了。先从最基本的开始:
一、获取控件的两种方式
1)第一种,也是经常使用的一种,通过IBOutlet方式。直接按住control键,将控件和ViewController建立联系,然后就可以通过Controller的属性来获取控件
2)第二种,通过设置控件的tag属性。
先设置控件的tag属性为一个integer类型的值,然后在代码中获取
UILabel *lbl2 = (UILabel*)[self.view viewWithTag:];
二、事件处理的三种方式
1)第一种,最常使用的是通过IBAction的方式
2)第二种,通过代码设置事件处理方法
在viewDidLoad事件中调用addTarget:action:forControlEvents来添加处理事件,
addTarget:表明以改对象的某个方法来处理事件,例如当前controller
action:代表处理事件的方法
forControlEvents:要处理的事件类型,一个UIControlEvents的枚举值
例子:
- (void) viewDidLoad
{
[super viewDidLoad];
NSLog(@"页面加载完成");
AppDelegate *ad = [UIApplication sharedApplication].delegate;
NSLog(@"打印代理类的lycname属性%@", ad.LycName); //给控件添加事件
[self.btnMeet addTarget:self action:@selector(btnMeet_click:) forControlEvents:UIControlEventTouchUpInside];
} -(void) btnMeet_click:(UIButton *) sender
{
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"提示" message:@"我是遇见按钮" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
[alertView show];
}
3)通过委托对象来处理事件
上两种事件处理针对的都是主动控件,即继承自UIControl:UIView的控件。
而如果是UITextView这种控件,是继承自UIScrollView:UIView,所以它本身并不具备一些常见事件,在这种情况下,就需要委托对象来处理特殊事件。
例如刚刚提到的UITextView控件,它的默认事件有:
-textViewShouldBeginEditing:将要开始编辑时触发
-textViewDidBeginEditing:开始编辑后触发
-textViewShouldEndEditing:将要结束编辑时触发
-textViewDidEndEditing:结束编辑后触发
-textViewDidChange:文本内容发生改变后触发
要实现上面的事件处理,必须要实现UITextViewDelegate协议
@interface UITextFieldViewController : UIViewController<UITextViewDelegate>
//属性
@property (strong,nonatomic) UIBarButtonItem *doneRightBI;//右侧导航条按钮-完成
@property (strong,nonatomic) UIBarButtonItem *commitRightBI;//右侧导航条按钮-提交 @end
@implementation UITextFieldViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
self.txtContent.delegate = self;
if (self.navigationItem != nil) {
[self.navigationItem setTitle:@"文本框演示"];
//初始化右侧导航按钮-提交按钮
UIBarButtonItem *rightBtn = [[UIBarButtonItem alloc] initWithTitle:@"提交" style:UIBarButtonItemStyleDone target:self action:@selector(registerUserHandler)];
self.commitRightBI = rightBtn;
//设置当前右侧按钮为提交按钮
[self.navigationItem setRightBarButtonItem:self.commitRightBI];
//初始化右侧导航按钮-完成按钮
UIBarButtonItem *rightDoneBtn = [[UIBarButtonItem alloc] initWithTitle:@"完成" style:UIBarButtonItemStyleDone target:self action:@selector(resignFirstReponderHandler)];
self.doneRightBI = rightDoneBtn;
}
}
//上面的按钮处理事件(registerUserHandler、resignFirstReponderHandler)就不列出来了
@end
//文本框开始编辑时触发
-(void) textViewDidBeginEditing:(UITextView *)textView
{
NSLog(@"开始编辑本文域");
if (self.navigationItem != nil)
{
[self.navigationItem setRightBarButtonItem:self.doneRightBI animated:NO];
}
} //文本框结束编辑时触发
-(void) textViewDidEndEditing:(UITextView *)textView
{
NSLog(@"结束编辑本文域");
[self resignFirstReponderHandler];
if (self.navigationItem != nil)
{
[self.navigationItem setRightBarButtonItem:self.commitRightBI animated:NO];
}
}
这样,通过上面的代码,当UITextView在不同状态时,右侧的导航按钮也会相应的改变
三、通过代码创建控件
1、创建UI控件
2、调用addSubView将创建的控件添加到其他view中
3、多次调用控件的setter方法,设置外观、行为等
例子:
//用代码创建一个控件
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
//设置button的大小
button.frame=CGRectMake(, , , );
[button setTitle:@"我是代码创建的" forState:UIControlStateNormal];
[self.view addSubview:button];
ios基础之入门(一)的更多相关文章
- [置顶] IOS 基础入门教程
IOS 基础入门教程 教程列表: IOS 简介 IOS环境搭建 Objective C 基础知识 创建第一款iPhone应用程序 IOS操作(action)和输出口(Outlet) iOS - 委托( ...
- iOS 基础入门--Bull' Eye 小游戏
说明 Bull's Eye小游戏是http://www.raywenderlich.com/store/ios-apprentice里非常酷的入门demo 跟着该教程一步步做下来便有了 ...
- 【转】iOS 开发怎么入门?
原文网址:http://www.zhihu.com/question/20264108 iOS 开发怎么入门? 请问有设计模式.内存管理方面的资料吗?最好有除了官方文档之外的其它内容,10 条评论 分 ...
- IM开发者的零基础通信技术入门(二):通信交换技术的百年发展史(下)
1.系列文章引言 1.1 适合谁来阅读? 本系列文章尽量使用最浅显易懂的文字.图片来组织内容,力求通信技术零基础的人群也能看懂.但个人建议,至少稍微了解过网络通信方面的知识后再看,会更有收获.如果您大 ...
- IM开发者的零基础通信技术入门(一):通信交换技术的百年发展史(上)
[来源申明]本文原文来自:微信公众号“鲜枣课堂”,官方网站:xzclass.com,原题为:<通信交换的百年沧桑(上)>,本文引用时已征得原作者同意.为了更好的内容呈现,即时通讯网在收录时 ...
- iOS 基础:Frames、Bounds 和 CGGeometry
https://segmentfault.com/a/1190000004695617 原文:<iOS Fundamentals: Frames, Bounds, and CGGeometry& ...
- 李洪强iOS开发之-入门指南
李洪强iOS开发之-入门指南 1零基础小白如何进行iOS系统学习 首先,学习目标要明确:其次,有了目标,要培养兴趣,经常给自己一些正面的反馈,比如对自己的进步进行鼓励,在前期小步快走:再次,学技术最重 ...
- IM开发者的零基础通信技术入门(三):国人通信方式的百年变迁
[来源申明]本文原文来自:微信公众号“鲜枣课堂”,官方网站:xzclass.com,原题为:<中国通信的百年沉浮>,本文引用时已征得原作者同意.为了更好的内容呈现,即时通讯网在收录时内容有 ...
- IOS基础学习-2: UIButton
IOS基础学习-2: UIButton UIButton是一个标准的UIControl控件,UIKit提供了一组控件:UISwitch开关.UIButton按钮.UISegmentedContro ...
随机推荐
- Expender Header 与 Content互斥展示
Expender 在展开时,Header 不展示:不展开时,展示 Header <Expander dxlc:DockLayoutControl.Dock="Top" IsE ...
- 内部通信服务Factory(WCF)
WCF,很好,却又麻烦,很多时候不想用WCF的原因就是:用这个真麻烦... 麻烦的地方,比如: 一堆一堆的服务配置,散落在一个一个的folder下,更新系统时容易出错 客户端除了要知道WCF Cont ...
- WPF 的datagrid 列名中没有显示下划线是怎么回事?
引用:http://www.cnblogs.com/sqzhuyi/archive/2011/07/26/sqlserverclient.html#2831497 功能介绍:输入查询语句,显示列表 出 ...
- Nginx负载均衡深入浅出
nginx不单可以作为强大的web服务器,也可以作为一个反向代理服务器,而且nginx还可以按照调度规则实现动态.静态页面的分离,可以按照轮询.ip哈希.URL哈希.权重等多种方式对后端服务器做负载均 ...
- WP-PostViews的安装和设置方法
wordpress本身并没有文章浏览统计功能,必须借助插件.想要知道自己的文章被多数访客浏览,或者访客对哪些文章或者哪类文章更加有兴趣,这就是文章统计的重要性了.WP-PostViews插件是哥不错的 ...
- Android学习之AsyncTask
我们在<Android学习之Handler消息传递机制>(http://www.cnblogs.com/zhouhb/p/5812447.html)已提到过,Android只允许UI线程修 ...
- Cheat (tldr, bropages) - Unix命令用法备忘单
cheat 是一个Unix命令行小工具,用来查询一些常用命令的惯用法(我们都知道,man page阅读起来太累了,常常是跳到最后去看 examples,但并不是所有man pages里面都有examp ...
- 给VMware下的Linux扩展磁盘空间(以CentOS6.3为例)转
#查看挂载点:df -h#显示:文件系统 容量 已用 可用 已用%% 挂载点/dev/mapper/vg_dc01-lv_root 47G 12G 34G 25% /tmpfs 504M 88K 50 ...
- ch5 MySQL 备份与恢复
第 5 章 MySQL 备份与恢复 前言 数据库的备份与恢复一直都是 DBA 工作中最为重要的部分之一,也是基本工作之一.任何正式环境的数据库都必须有完整的备份计划和恢复测试,本章内容将主要介绍 My ...
- Jenkins xcodebuild There are no schemes in workspace
Manage Schemes... 勾选 Shared 参考:http://stackoverflow.com/questions/14368938/xcodebuild-says-does-not- ...