UIView编程体验(一)

尽管这不是一个新的话题,但是实际上UIView是很多控件的基础类,而且界面的布局基本是基于UIView来的,当然我们也可以使用CGLayer,本文仅列举一些个人在使用UIView过程中的经验和大家分享。大部分的内容来源于UIView Programming Guide,这个guide大家可以在xcode的帮助文档里面查到也可以在苹果的官网中找到。

 

首先说说Interface Builder. 在创建一个UIView的时候,我们往往会创建一个UIViewController,这使用了MVC模式,在controller里面实现业务逻辑,和model以及用户界面打交道。在xcode的创建UIViewController的向导里面可以勾选With Xib for user interface来创建一个xib文件,Xib可以被interface builder打开,之所以需要这个文件主要是为了降低用程序来控制页面控件的代码量,比如如果你需要一个UILabel,并且把它放在页面上部,如果你用Interface Builder你需要做的是将一个Label控件从Object Library里面拖到你想要的位置,如果用代码,则你需要用UILabel的initWithFrame设置你要放置该控件的位置,然后使用addSubView将其加入到parent view之中:

UILabel* titleLabel =[UILabel alloc] initWithFrame :CGRectMake(x, y, width, height); 
[self.view addSubView : titleLabel];  

 

在Interface Builder的另一个要完成的事情是将你所拖放到界面里的控件和UIViewController里面的代码绑定起来,其中包含两种连接,第一种是将UIViewController里面的成员变量和界面上的控件绑定,比如在IB中加入了一个label,现在为了在controller里面使用这个label,我们需要:

1. 在UIViewController里面新增一个UILabel成员.

2.添加@property(nonatomic, retain) UILabel* wordLabel; 在.m文件里面增加@synthesize wordLabel

3.为这个property增加IBOutlet,我单独把这一步和第二步分开,一般的类的property我们并不需要这个IBOutlet,但是如果我们需要在Interface Builder里面的控件和类里面的某个元素关联并出现在InterfaceBuilder里面我们就需要这个关键字 @property(nonatomic, retain) IBOutlet UILabel* wordLabel;

4. 回到interfacebuilder,点选File's Owner,按住control键鼠标拖动到label控件上松开,无论你拖到ui窗体上面的label控件或者左边树状控件图上的Label控件都可以,这时会弹出一个黑色的小窗口,里面出现了wordlabel,也就是我们刚刚加入的那个property,选择它,控件就绑定好了,这时UIViewController就知道其成员wordlabel和这个label控件是关联的了。

5.Interface Builder另一种绑定是绑定控件的事件到controller里面的代码,我们现在拖动一个button到界面上,然后回到UIViewController中。在.h文件中声明一个方法 -(IBAction) onWordChangeClicked:(id) sender; 在.m中写个简单的该方法的实现:

 

-(IBAction) onWordChangeClicked:(id) sender
{
  wordLabel.text=@"Changed";
}

 这个方法和其他方法不同的是IBAction,正是这个返回值告诉Controller这个方法是用来绑定IB里面的控件的

接下来我们把这段代码和刚拖到页面上的button绑定起来。 回到interface builder,选中button控件,按住control键,拖动到file's owner放开,弹出的小黑框出现了我们刚输入的方法,选中它以关联控件和其click事件,不过这里既然是移动设备我们不能叫click事件,准确的名称是Touch Up Inside事件,当你触摸这个button的时候触发。

OK, done!运行一下看看效果吧 

 

 

 

转载于:https://www.cnblogs.com/cyberknightgic/archive/2011/11/04/2236277.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/263065.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决Spring下无法实时访问本地静态资源

解决Spring下浏览器无法实时访问本地静态资源场景1:原本地文件test.json中内容为 “1”。我们通过前后端交互操作,修改test.json的内容为 “2”。此时前端再次读取test.json,会发现内容依旧为 “1”,即前端并不会实时同步本地静态…

java传值和通过引用传递

第一次使用int实验&#xff1a; public class TTEST {private static List<UserEntity> mList new LinkedList<UserEntity>(); public static void main(String[] args) {int a 0;changeA(a);System.out.println("a "a);}public static void change…

好消息:VS 2008 and .NET 3.5 Beta 2 发布了

消息来源:http://weblogs.asp.net/scottgu/archive/2007/07/26/vs-2008-and-net-3-5-beta-2-released.aspx下载地址http://www.microsoft.com/downloads/results.aspx?DisplayLangen&nr20&freetextvisualstudio2008&sortCriteriadate特点:- VS 2008 Multi-Targeti…

android 之数据存储(IO)

android 操作文件分为两种&#xff0c; 第一种&#xff1a;直接写到手机内存中&#xff0c;手机内存有限。 第二种&#xff1a;写到手机的内存卡(SD)中&#xff0c;进行操作文件。 以下分为两种情况的读精心操作&#xff0c;一个简单的demo.在此做一个记录。 代码。 package co…

Aspose.Java实现word转pdf,添加水印等操作

Aspose.Java实现word转pdf&#xff0c;添加水印等操作一. word转pdf二. 文档插入水印Aspose是一款商用版控件&#xff0c;支持各类文档操作&#xff0c;这里主要介绍如何在Springboot项目中使用破解版。 一. word转pdf 在项目中导入aspose.word包 百度网盘下载 提取码&#x…

django 1.8 官方文档翻译: 3-4-2 内建显示视图

Django 文档协作翻译小组人手紧缺&#xff0c;有兴趣的朋友可以加入我们&#xff0c;完全公益性质。 交流群&#xff1a;467338606 网站&#xff1a;http://python.usyiyi.cn/django/index.html 基于类的内建通用视图 编写Web应用可能是单调的&#xff0c;因为你需要不断的重复…

(原)学习ORACLE 视图

--视图--视图是一个逻辑表&#xff0c;是查看表的一种方式&#xff0c;用来定义来自一个或多个表的行和列的多种连接。通过视图&#xff0c;可以查看到表中的数据。--创建视图CREATE VIEW MYTEST.V_INFO(ID,NAME,LOGINNAME,Address)ASSELECT TEST.ID,TEST.NAME,TEST.LOGINNAME,…

记一次Hbase数据迁移和遇到的问题

因为集群不互通&#xff0c;所以采用手动方式迁移 1、下载目标集群数据 hadoop fs -get /apps/hbase/data/data/default/*c4be21d3000064c0 /mnt/data 2、远程复制数据&#xff0c;可以压缩一下 scp *** 3、上传数据到HDFS&#xff0c;一定要切换到hbase用户&#xff0c;不然会…

IIS中“使用 XSL 样式表无法查看 XML 输入”问题的解决

IIS中“使用 XSL 样式表无法查看 XML 输入”问题的解决2009-05-13 15:15今日安装IIS后&#xff0c;随便写了一个aspx的文件作为测试&#xff0c;发现浏览器中显示&#xff1a;使用 XSL 样式表无法查看 XML 输入。请更正错误然后单击 刷新按钮,或以后重试。这才发现了如下一个问…

SQL三种连接:内连接、外连接、交叉连接

SQL三种连接&#xff1a;内连接、外连接、交叉连接一、交叉连接&#xff08;CROSS JOIN&#xff09;二、内连接&#xff08;INNER JOIN&#xff09;三、外连接&#xff08;LEFT JOIN、RIGHT JOIN、FULL JOIN&#xff09;1.左外连接2.右外连接3.完整外连接准备两张表并以PersonI…

二叉树非递归先序遍历

二叉树的递归先序遍历很简单&#xff0c;假设二叉树的结点定义如下: 1 struct BinaryTreeNode 2 { 3 int m_nValue; 4 BinaryTreeNode* m_pLeft; 5 BinaryTreeNode* m_pRight; 6 }; 递归先序遵循:根-左-右的顺序 1 void PreOrder(BinaryTreeNode* Root) 2 { 3 …

面向对象与基于对象 区别

很多人没有区分“面向对象”和“基于对象”两个不同的概念。面向对象的三大特点&#xff08;封装&#xff0c;继承&#xff0c;多态&#xff09;却一不可。通常“基于对象”是使用对象&#xff0c;但是无法利用现有的对象模板产生新的对象类型&#xff0c;继而产生新的对象&…

Flex与Javascript交互

关键字&#xff1a;ExternalInterface 所用类库&#xff1a;SWFObject /** * Flex调用Javascript函数 * params functionName:String Javascript函数名称 * params ...params Javascript函数参数 * return 返回Javascript函数的return内容 **/ ExternalInterface.call(…

显示器调校与Soft Proofing ZZ

版权归原作者所有&#xff01; http://www.cgan.net/science/popular/cookie/displayregulate.htm 自从桌面出版走到计算机上&#xff0c;显示器成为印前流程中重要的设备之一。从扫描、数码摄影、相片修改、排版等工序中&#xff0c;也可找到显示器的存在。但往往很多同业却忽…

SparkContext: Error initializing SparkContext解决方法

SparkContext: Error initializing SparkContext解决方法Spark在配置高可用集群中&#xff0c;出现报错 ERROR SparkContext: Error initializing SparkContext. java.net.ConnectException: Call From hadoop102/192.168.10.102 to hadoop102:8020 failed on connection excep…

tomcat 绑定 ip 及域名,限制非法域名访问

公司WEB 采用linuxtomcat架构。经常会收到电信的警告&#xff0c;说某个IP下挂用了未备案域名&#xff0c;如果不处理就封IP。鉴于此&#xff0c;需要将tomcat的访问地址进行限制&#xff0c;只允许通过IP地址或者自己指定的域名来访问。配置tomcat/conf/server.xml 文件&#…

数据库设计(四)概念数据模型

目标&#xff1a;本文主要介绍如何定义实体的主、次标识符。一、标识符标识符是实体中一个或多个属性的集合&#xff0c;可用来唯一标识实体中的一个实例。要强调的是&#xff0c;CDM中的标识符等价于PDM中的主键或候选键。每个实体都必须至少有一个标识符。如果实体只有一个标…

error C2471和error C1083

error C2471和error C1083 VS2008IDE&#xff1a;编译时出现问题&#xff1a;error C2471: 无法更新程序数据库“d:\my documents\visual studio 2008\projects\mdib\mdib\debug\vc90.pdb”error C1083: 无法打开程序数据库文件:“d:\my documents\visual studio 2008\projects…

中文/英文换行总结

html部分 <div class"parent"><p class"p1">湿哒哒大的大大大的大的大大大的大的啊啊大大大啊大大打啊打大大大</p><p class"p2">湿哒哒大的大大大的大的大大大的大的啊啊大大大啊大大打啊打大大大</p><p clas…

Go学习笔记—基于Go的进程间通信

IPC&#xff08;Inter-Process Communication 进程间通信&#xff09; 一般方法&#xff1a;(1) 半双工Unix管道 (2) FIFOs(命名管道) (3) 消息队列 (4) 信号量 (5) 共享内存 (6) 网络Socket (7) RPC(远程过程调用) &#xff08;一&#xff09;管道&#xff08;Pipe&#xff…