第十五章、AppKit简介

  • 到目前为止,我们所写的程序都使用了Foundation Kit,并通过文本输出结果发送到控制台的原始方式向我们传达信息。
  • 利用Application Kit(简称AppKit)创建用户界面程序
  • 我们要创建的应用程序的名称是CaseTool,它显示了一个窗口,包含一个文本框,一个标签和两个按钮。向文本框输入文本并点击一个按钮后,输入的文本就会转换为大写或小写状态。
  • 总体思路:创建项目文件->对用户界面布局->建立UI和代码之间的关联。

源码及程序:链接:https://pan.baidu.com/s/1_bVIEjIkHWTLb5rCEeMw9w 密码:fhkw

1.构建项目




  • 创建程序:打开Xcode,在启动界面点击Create a New Xcode Project选项。选择macos下的Cocoa App
  • 输入程序名称CaseTool,语言选择Objective-C,其他的暂时不用管。
  • 完成这些你就创建好了一个新项目,打开CaseTool群组,将会看到项目中已经存在了一些文件:AppDelegate,ViewController等。
  • AppDelegate定义了整个项目的委托关系,也就是消息响应关系。ViewController管理界面视图的。

2.创建委托文件的@interface部分

  • 我们将使用Xcode中的Interface Builder编辑器来布局窗口内容,并在ViewController与用户界面之间创建各种连接。
  • Interface Builder也适用于布局iOS应用程序,因此无论你要为哪一个平台开发应用程序,都需要在Interface Builder上进行很多工作
  • 你会看到一个IBOutlet的关键字,它不是一个真正的Objective-C关键字,但我们通常会在Interface Builder中使用它。你可能之翼到了在IBOutlet哪行代码的左边边栏有一个小点。点击那个点就会直接跳转到Interface Builder中与其相关的对象。
  • 我们之后还会遇到另一个像关键字的IBAction。IBAction被定义为void的作用,这意味着这个在文件中声明的方法返回的类型将是void(也就是什么都不返回)。
  • 如果IBOutlet和 IBAction不执行任何操作,为什么还要定义它们呢?原因是它们不是用于编译的,而是为Interface Builder以及阅读代码的人提供的标记。

3.Interface Builder

  • 是时候使用Xcode的Interface Builder编辑器了,有些人会将其成为IB。
  • 我们现在要编辑的是项目创建时附带的storyboard文件,这个文件配备了一个菜单栏以及一个可以放置用户控件的窗口。
  • 注意编辑器区域的左边,Interface Builder的dock面板包含了表示nib文件内容的图标。目前,我们可以展开dock面板来显示对象的名称。dock面板底部右边的圆形中有个箭头,点击它就可以看到dock面板中各项的内容。
  • 编辑器窗口顶端是我们所创建的应用程序的菜单栏。你可以添加编辑菜单以及菜单项。
  • 菜单栏下面就是我们用来放置文本框和按钮的空窗口。dock面板上窗口形状的图标所表示的就是这个真实可见的窗口。
  • 现在,我们要使用右下角的库面板,

说明:虽然文件的扩展名是xib,我们仍称之为nib(NeXT Interface Builder)文件。nib文件是包含了压缩对象的二进制文件,而.xib文件是XML格式的nib文件。在编译时,.xib文件将会编辑为nib格式。

4.设计用户界面

  • 现在可以对用户界面布局了。在库中先找到TextField,然后将其拖到窗口中,在拖动过程中,你将会看到窗口中出现了蓝色的引导线,这有利于你按照苹果公司的用户界面规范对对象进行布局。
  • 在库里面找到label图标并将其拖入窗口,我们用这个来显示转换成大写或小写的字符串结果。
  • 在库中找到点击按钮(push Button),将其拖入窗口,双击刚刚放入的按钮,上面的文字就会变成可编辑状态。输入UpperCase,并按回车键以完成修改。
  • 在库中找到点击按钮(push Button),将其拖入窗口,双击刚刚放入的按钮,上面的文字就会变成可编辑状态。输入LowerCase,并按回车键以完成修改。
  • 接下来,简单进行一下内部修饰,调整文本框和窗口的大小,使其更加美观。我们也对标签(label)的尺寸进行了调整,使其几乎横跨了整个窗口(表面上看不见)。标签必须足够宽,以便显示你输入到文本框中的内容。

5.创建连接

介绍如何将代码与刚才创建的用户界面元素相连接。

5.1连接输出口(IBOutlet)

  • Xcode窗口的右上角有三个标记为Editor的按钮,点击中间的按钮,就会将编辑器从中间垂直分成两部分,这就是辅助编辑器。
  • 接下来,按住Control键并将光标拖动到头文件,出现“Insert Outlet or Action”提示消息再松手。松开鼠标会弹出如上图的一个对话框。
  • 对话框第一项是选择Outlet还是Action,第二项是Name文本框,我们输入“textField”,并点击Connect按钮。这样做会在头文件中创建“textField”属性。
  • 接下来对标签(label)重复之前的连接步骤并将其命名为“resultField”。

5.创建连接

5.2连接操作(IBAction)

  • 现在,我们将代码连接到操作,这样按下按钮就会触发代码
  • 按住Control键并拖动鼠标到头文件,连接对话框会再次弹出。这次,要将连接类型改成Action。在Name文本框中输入UpperCase,并点击Connect按钮。
  • 上面的操作将会在头文件中创建方法的声明,并会在.m文件中创建方法的实现(内容为空)。
  • 现在,只要单击该按钮,UpperCase:消息就会如我们所想的那样发送给ViewController。我们可以在其中UpperCase执行任何想要的代码。
  • 最后连接LowerCase按钮,按住Control键并拖动鼠标到头文件,将连接类型改成Action,连接名称设为“LowerCase”

注意:
拖动路径的方向是使用Interface Builder时一个容易引起混淆的地方。拖动的方向应该是从“需要了解某些内容的对象”到“被了解的对象”。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,907评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,987评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,298评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,586评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,633评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,488评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,275评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,176评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,619评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,819评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,932评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,655评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,265评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,871评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,994评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,095评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,884评论 2 354

推荐阅读更多精彩内容