十一章基于物联网ios app应用开发实验_第1页
十一章基于物联网ios app应用开发实验_第2页
十一章基于物联网ios app应用开发实验_第3页
十一章基于物联网ios app应用开发实验_第4页
十一章基于物联网ios app应用开发实验_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第十一 基于物联网的第十一 基于物联网的IOSAPP应用设计实 ios介 编写iOS应用程序有何不 在Xcode中创建项 Xcode项目窗 Xcode跳转 MVC方 第十一基于物联网第十一基于物联网的iosAPP应用设计 ios11.1.1必要开始编写iOS应用程序之前,需要做一些准备工作。初学者需要一台安装了MountainLion(OSX10.8)Mavericks(OSX10.9)Intel架构的Macintosh计算机。任何最近上市的基于Intel架构的Macintosh计算机iOSiOSLoginAppleLoginAppleIDApple就点击Joinnow创建一个ID,然后再登录。登录之后就进入了iOS开发中心的进行iOS应用开发。iOS开发中最重要的工具是Xcode,它是苹果的集成开发环境(IDE)Xcode提供了一些实用工具,用于创建和调试源代码、编译应用程序,以及对应用程序进行性能调优。可以从MacAppStore下载Xcode(可以MacAppleAppStore)SDKXcode版本的不断更XcodeiOSSDKMacAppStore中了,同时也会在开发者网站上提供预览版供开发者下载。总之,如果想下载Xcode和iOSSDK的最新版本(非beta版),应该使用MacAppStore。本书面向最新版SDK。在一些地方,我们会使用iOS7中引入的新函数或方法,它们可能与旧版SDK不兼容。当然,出现这些情况时我们会特别指出。请从或者本书论坛上下载最新的源代码①SDK发布时,我们会 开发者XcodeMac创建并运行iPhone和iPad应用。这个模拟器对于学习编写iOS程序极其有用。SDKiPhoneiOSAppStore99美元/AppStoreiOS设299美元//programs/ios(标准版计划)/programs/ios(标准版计划)iOS所支持的始终联网的移动设备(iPhone),iOSMacMac售程序)iPodtouchWi-FiiPad程序可能会在共享网络中降低性能。开发iOS应用似乎有很高的门槛,但是苹果99VisualStudio(IDE)iPhoneiPodtouchiPadiOS模拟器进行测试,但并非所有程序都是如此。即便是那些可以在模拟器上运行11.2iOS应用程序有何如果从未使用Cocoa11.2iOS应用程序有何如果从未使用Cocoa(或者它的前辈NeXTSTEP和OpenStep)写过程序,你CocoaTouch(iOS应用程序的应用程序框架)比较新奇。它与其他常用应用程序框架(如用于构建.NET或Java应用程序的框架)之间存在CocoaTouchCocoaNeXTSTEPiOSSDKMacOSXCocoa中原样移植过来的。即便是那些不同的类,也遵循相同的基本原则和相似的设计模式。但是,Cocoa和CocoaTouch之间还是有一些不同的。无论你的知识背景如何,都需要时刻牢记iOS11.2.1只能同时运行一个在iOS中,任意时刻只能有一个应用处于活动状态并显示在屏幕上。从iOS开始,用户按下Home键后,应用程序可以在后台继续运行,但这也只限于少数CPUiOS11.2.2只有一个iOSiOS设备屏幕的大小,是固定11.2.3有限的访问iOS严格限制了应用程序的访问权限。iOSiOS11.2.4有限的iOS严格限制了应用程序的访问权限。iOSiOS11.2.4有限的响应iOSHome键查看最近使用的应用列表。如果用户按HomeiOS返回主屏幕,应用必须快速保存一切内容并退出。如果没有在5秒之内保存必要11.2.5有限的屏幕iPhoneiPhoneiPhoneiPhoneiPhone像素×480像素×960iPhoneiPhone4640×1136像素。像素数量有了极大的提高,但是屏幕的显示空间却没有大的变化,iPhone所能提iPad1024像素×768大。下面来做一个有趣的对比,写作本书时,苹果最便宜的iMac的分辨率是1920像素×1080大。下面来做一个有趣的对比,写作本书时,苹果最便宜的iMac的分辨率是1920像素×1080像素,最便宜的笔记本电脑(11MacBookAir)的分辨率1366像素×76827LEDCinemaDisplay则支持高达2560像素×1440像素的超高分辨率。请注意,对于iPad而言,如果不出意外的话,往后的iPad机型(iPad2以后的全尺寸iPad以及iPadMini屏幕的iPhone一样,这块2048像素×1536像素的屏幕的实际尺寸跟旧屏幕一11.2.6有限的系统512MB16GBiOS48KBiOS目前上市的iOS设备的物理内存要么是512MB(iPhone4S、iPad2、一代iPadmini、iPodtouch5),要么是1024MB(iPhone5c、iPhone5S、iPadAir、iPadminiRetina),而且以后还会不断加大。很大一部分内存被用于屏幕缓冲区和可能会更少,尤其是现在其他的应用可以在后台运行了)iOS存时,却还考虑另一个因素。现代的计算机操作系统(比如OSX)会将未使用的用内存时,它仍然可以正常运行。但是,iOS并不会将易失性内存(数据)iOS设备中未使CocoaTouch11.2.7不支持垃11.2.7不支持垃圾之前提过,CocoaTouch使用的是Objective-C,但是iOS却并不支持一个Objective-C早在本世纪初就已经有的关键特性:垃圾回收。是的,CocoaTouchiOS编写程序时需要手动管理内存,许多刚刚接触这个平台iOSObjective-CObjective-C对象占用内存的问题。MacOSX10.8ARC就成为了针对ARC11.3,怒。因此,本书也以“Hello,World!Xcode创建一iOS11.3,怒。因此,本书也以“Hello,World!Xcode创建一iOS应用,在模拟设备屏幕上显示文本“HelloWorld!”。我们将讨论使用XcodeiOSiOSiOS11.3.1Xcode中创建项XcodeiOSSDK()下载本书的项目归档文件。还可以顺便看一下本书的论坛(/)。本书的论坛是讨论iOS开发的好地02-HelloWorld前,需要启动XcodeMacStoreXcodeXcodeMac/ApplicationsXcode如果你很熟悉以前版本的Xcode,但是还没用过Xcode5,就会发现有很多变化(大多是变得比旧版更好了)Xcode2-1ShowthiswindowShowthiswindowwhenMaciPhoneiPadiPodtouch等设备,么第一次启动Xcode时可能会看到一个对话框,询问你是否要使用该设备进行开发。就目前的学习来说,点击Ignore(忽略)按钮就可以了。否则就会显示Organizer窗口即可。如果已经加入了付费的iOS开发者计划(iOSDeveloperProgram),iOS设备要创建新项目,可以选择File➤New➤Project...(或者按下iOSOSXiOS用,所以选择iOS部分的Application用,所以选择iOS部分的Application(应用)类别,以显示iOS应用模板。图2-2右上方面板中的每一个图标都表示一个独立的项目模板,这些模板可以用作构iOSSingleViewApplication(单视图应用)iPhoneiPad应用界面.SingleView图标(2-2示),然后单击Next按钮,就会看到项目选项表单,如图2-3所示。在这个表ProductName(产品名称)CompanyIdentifier(公司标识)。Xcode会将这些内容结合起来,为应用生成一个唯一的BundleIdentifier(包标识符)OrganizationName(组织名称)Xcode会自动在你创建的每一个源代码文件中以这个名称插入版权声明。把ProductName设置为HelloWorld,组织名称为Apress,然后在CompanyIdentifier字段填写com.apress,如图2-3所示。等你注册了开发者计划并且了解授权文件(provisioningprofile)ClassPrefix(类名前缀),Xcode为我们创建的所有类的类名前面。这么做是为了避免与苹果(使用两个字符的前缀)ClassPrefix(类名前缀),Xcode为我们创建的所有类的类名前面。这么做是为了避免与苹果(使用两个字符的前缀)Objective-CBIDBIDBeginningiOSDevelopment如,可能有很多类会被命名为MyViewController,然而被命名为BIDMyViewController的类就很少了,这就大大降低了命名冲突的可能性。Devices(即设备类别)XcodeiPhoneiPodtouchiPad,或是能够在所有iOS设备上运行的通用应用。在设备类别中选择iPhone(如果它还没有被选的屏幕尺寸相同)iPhoneiPodtouch(iPadFinderXcodeCreateCreatelocalFinderXcodeCreateCreatelocalgitrepositoryforthisproject(仓库)GitXcodeGitGit(SourceControlManagementSCM)XcodegitCreate11.3.2Xcode项目窗Xcode2-5iOSXcode2-5iOSXcode5Xcode3.xXcode4.x1.工具Xcode项目窗口的顶部区域是工具栏(2-6)(scheme)工具栏中间的大方框是活动视图(activityview)工具栏中间的大方框是活动视图(activityview)辅助编辑器(assistanteditor)文件。可以手动指定每个面板的内容,也可以让Xcode自动判断进而显示与Objective-C类的实现文件(.m文件),Xcode就会自动在右侧面板中显示这个类的头文件(.h文件)Xcode版本编辑器(versioneditor)Time类似的对比视图,这个对比视图可以跟Subversion和git等版本控制系统协同工2.导航2.导航导航视图开关把它隐藏的话,请再次将其显示出来。导航视图共提供了8个面项目导航面板(projectnavigator):这个面板列出了项目用到的所有文件,如图2-7所示。可以把任何想要的内容引用放在这里,从源代码文件到图片文件、数据模型、属性列表文件(plist文件,2.1.2节会介绍),甚至是其以编辑(Xcode知道如何编辑这种文件)符号导航面板(symbol符号导航面板(symbolnavigator):工作区中定义的符号(symbol)2-8所示。从根本上说,符号就是那些编Objective-C搜索导航面板(Findnavigator搜索导航面板(Findnavigator):使用这个导航面板可以对工作区中的所有文件执行搜索,如图2-9所示。面板顶部有多层下拉菜单,Find(查询)功能也Replace(替换)功能,此外还可以对输入的文本采用不同的搜索方式。测试导航面板(Testnavigator):测试导航面板(Testnavigator):Xcode果(2-11所示)调试导航面板(debugnavigator)2-12Xcode5UserGuide文档的(stackframe)(stackframe)面板(breakpointnavigator):可以在断点导航面板中查看已设置的所有断点,如图2-13所示。顾名思义,断点会指向导致应用停止运行(或者跳出)的代码部11.3.3Xcode跳转在编辑器的顶部,你会找到一个叫作跳转栏2-15可显示的子菜单包括最近的文件(RecentFiles)、未保存的文件(UnsavedFiles)、关联文件(Counterparts)、父类(Superclasses可显示的子菜单包括最近的文件(RecentFiles)、未保存的文件(UnsavedFiles)、关联文件(Counterparts)、父类(Superclasses)、子类(Subclasses)、兄弟类(Siblings)、类别(Categories)2-15BIDAppDelegate.m,Xcode511.3.4实用工具Xcode11.3.5界面构Xcode的早期版本包含一个被称为界面构建器(11.3.5界面构Xcode的早期版本包含一个被称为界面构建器(InterfaceBuilder)的界面设XcodeXcode11.3.6Xcode4(compiler)和底层调试器(low-leveldebugger)过去几年苹果一直使用GCC(GNUCCompiler)作为底层编译器。不过最近LLVM(LowLevelVirtualMachine,底层虚拟机)LLVMGCC快。除了代码生成速度快之外,LLVM还知道更多与代码相关的信息,所以它能生成更智能、更精确的错误信息和警告。Xcode对LLVM也有很好的集成,后者为前者注入了强大的能量。Xcode名称拼写错误、括号匹配错误、分号遗漏等问题。此外,LLVM还提供了一个复杂的静态分析器(staticanalyzer),它可以扫描你的代码以查找各种潜在问题,Objective-CLLVM11.3.7深入研究XcodeHelloWorld8个导航面板图标(位于工作区左侧)中最左边的那个图标(command+1command+88command+1command+88command+1面板,command+2对应符号导航面板,以此类推,command+8对应日志导航面板。项目导航面板中的第一个条目就是项目名,本例为HelloWorld。这个条目表示整个项目,可以做些与项目相关的配置。单击这个条目,就可以在Xcode的编2-7HelloWorld下一些子文件夹(Xcode中称为组)SupportingFiles:HelloWorld文件夹内的某个文件夹,包含了项目中必需的Objective-CSupportingFiles文件夹上花费太多时间。创建一个新的iPhone应用项目后,这个文件夹就会包含4个HelloWorld-Info.plist:这个文件包含应用的件。事实上,最好不要碰这个文件,除非你真的知道自己在做什么。代表precompiledheader,意思是预编译头文件)。通常,这个文件中包含的头Xcode代表precompiledheader,意思是预编译头文件)。通常,这个文件中包含的头Xcode间(BuildRun可以对项目进行编译)XcodeHelloWorld文SupportingFiles文件夹,里面是构建并运行单元测FrameworksFrameworks7Products:这个文件夹包含构建项目时生成的应用。展开Products文件夹,HelloWorld.app的文件,这就是这个项目创建出来的应用。它HelloWorldTests.xctest的文件,它表示测试代码。这些文件都被称为构建目(buildtarget)。由于我们还没有构建这个应用,所以它们都显Xcode注意:导航面板区域中的“文件夹”并不一定与Mac文件系统上的文件夹一一对应。它们只是Xcode中的逻辑分组,用于对所有的东西进行组织,以便在应至可以把它们放到项目文件夹外部。XcodeXcodeClassesXcodeClasses11.3.8界面构建器在项目窗口的项目导航面板中展开HelloWorld组(如果尚未展开),然后选择Main.storyboard文件。然后这个文件就会在编辑器面板中打开(参见图2-16)iPhone屏幕,可以在这个背景上编辑界面。这就是Xcode的界面构建器(有时被称为IB),可以在这里设计应用的用户界面。界面构建器历史悠久,它于1988年面世,曾用于开发NeXTSTEP、OpenStep、MacOSX应用,现在也用于iPhone和iPad等iOS设备。之前已经提到过,界面构建器过去是一个独立的应用(Xcode时会自动安装界面构建器),XcodeXcode文件文件格界面构建器支持不同的文件类型:最初的版本使用扩展名为nib的二进制格xibXML的衍生格式。两者包含了完全一样的文档内容,但xib格式的版本却是基于文本格式的,这样做有很多优势,尤其是在你使用版本控制系统的时候。注意iOS项目模板全都默认使用.xib扩展名,但是在最初的20年里,所有的界面构建器文件都使用.nib扩展名,结果就是大部分开发者都把界面构建器文件称为“nib文件”。不管文件实际使用的是.xib扩展名还是.nib扩展名,都被称为“nib文件”。事实上,苹果公司仍然在其文档中使用“nib”和“nib文件”这两个术语。一个nib文件可以包含任意数量的对象。但iOSnib文件负责包含一个视图(一般都是全屏视图)以及nibiOS最近几年,界面构建器开始支持另一种文件类型,即分镜(storyboard)将分镜想像成一个“nib文件”(meta-nibfile),nib将分镜想像成一个“nib文件”(meta-nibfile),nib文件不同,分镜不会一次加载所有的内容,而是在你需要加载某视图和控nib文件我们都会使用到。在当前的示例中,Xcode为我们创建了一个分镜,所以我们先来看看它的用法。iOS一样。Main.storyboard文件会在应用启动时自动进行加载(nibiPhone屏幕尺寸(虽然也可能是其他尺寸)ViewController(视图控制器)FirstResponder(第一响应者)。目前请先忽略掉FirstResponder示分镜的所有内容,并由相关的场景(scene)作为容器来进行划分。在本示例中只有一个场景,它的名称是ViewControllerScene。你会看到它包含了一个名称为View示分镜的所有内容,并由相关的场景(scene)作为容器来进行划分。在本示例中只有一个场景,它的名称是ViewControllerScene。你会看到它包含了一个名称为ViewControllerView的子项(还有其他一ViewUIViewUIView户界面元素(包括按钮、文本框、标签等)都继承自UIView。但是,本书使用的术语视图(view)UIViewView图标,Xcode会自动对我们之前所说的iPhone尺寸屏幕的矩形进行高亮。在这2-17所示。如果没有看到这个实用工具视图,可以单击工具栏上三个View按钮中最右边的那个,选择View➤Utilities➤ShowUtilities,或者按下option+command+0实用工具视图的下半部分称为库面板(librarypane),或者简称为库。库是可重用对象的集合,可以在自己的程序中使用它们。库面板顶部工具栏中的4实用工具视图的下半部分称为库面板(librarypane),或者简称为库。库是可重用对象的集合,可以在自己的程序中使用它们。库面板顶部工具栏中的44文件模板库(filetemplatelibrary):这部分包含一些文件模板,向项目中添加Objective-C类,就可以从文件模板库中拖出一个Objective-C类文件。代码片段库(codesnippetlibrary):这部分包含一些精选的代码片段,可以直Objective-C的快速枚举语法?没关系,就从iOS界面的任何对象。本书的示例程序会大量使用对象注意对象库中的对象主要来自于iOS的UIKit框架,这个框架中包含的对象可UIKit注意对象库中的对象主要来自于iOS的UIKit框架,这个框架中包含的对象可UIKitCocoaTouchAppKitCocoa在很多明显的不同。不过,NSStringNSArray等属于Foundation框架的类,是Cocoa和CocoaTouch共有的。注意库面板底部的搜索框。想找一个按钮控件?那就在搜索框里输入button,这时库会只显示名字中含有“button”的项。搜索现在试着使用界面构建器。单击库顶部的对象库图标(看起来像个立方体)TableViewcontrol+option+command+3在库中找到Label。它大约位于列表的顶部。然后,把标签控件拖放到之前介绍过的视图中。(dock中单击一下View图标。)当把光标移到视图上面时,光标就会变成一个绿色的加号指示符(Finder中它表示“我正在复制某些内容”)2-18正在编辑的视图中,就能将其作为子视图添加到主视图(View的视图)LabelUILabel签,键入文本LabelUILabel签,键入文本,File➤Save(command+S)iOSiOS选项。在它下面有一整段标题为iOSSimulator的列表,里面列出了你可以在iOS模拟器中使用的所有型号的设备。选择iPhoneRetina(4inch),这样我们的应iPhone5的配置运行了。如果参与了苹果公司的付费iOSiPhoneProduct➤Run(command+R)2-19Product➤Run(command+R)2-19Mac与上面讲的有所不同。总而言之,如果想要在iPhoneiPadiPodtouch上构建并运行应用,就必须注册苹果公司的iOS开发者计划并支付一些费用,然后Xcode做一些恰当的配置。加入开发者计划后,苹果公司会提供一些必要iPhoneiPad返回Xcode了。Xcode和模拟器是两个互相独立的应用。提示检查完应用后,XcodeXcode属性修XcodeHelloWorldXcodeHelloWorld2-option+command+1option+command+2RunObjective-CObjective-C对象(与在代码中所做的一样),11.4实现基本HelloWorld11.4实现基本HelloWorldCocoaTouch3-1所示。用户按下一个按钮时,标签上的文本会相应地改变。这看上去是一个相当简单的示例,但它展示了在iOSCocoaTouchGUI元素使用带样式的文本styledtext)11.4.1MVC在深入学习之前,先介绍一些基本理论。CocoaTouch设计者们采用MVC模式(Model-View-Controller)作为指导原则。在基于图形用MVC可以非常合乎逻辑地对代码进行拆分。目前,几乎所有面向对象编程框架都在一定程度上借鉴了MVC的设计理念,但很少有像CocoaTouchMVCMVC3MVC3MVC3MVC3CocoaTouch(甚至创建)Objective-C序数据,也可以使用CoreData构建一个数据模型。本章的应用程序不会创建任义的类(NSObject子类),UIKit控制器类(UIViewController,稍后就会介绍)的子类。这么说吧,通过继承CocoaTouchUIKitMVC原则的情况。在开发时牢记这个概念,就能够创建出简洁而易于维护的代11.4.2创建现在开始创建下一个Xcode项目。这个项目与上一章的项目使用相同的模板SingleViewApplication。从这个简单的模板入手,更容易理解视图和控制器之间的Xcode现在开始创建下一个Xcode项目。这个项目与上一章的项目使用相同的模板SingleViewApplication。从这个简单的模板入手,更容易理解视图和控制器之间的XcodeFile➤New➤NewProject...(shift+command+N)SingleViewApplicationNextProductNameButtonFunOrganizationNameIdentifierClassPrefix这三个字段的值默认与上一个项目相同(Apress、,DevicesiPhoneiPhone3-2点击Next,XcodeCreategitrepository选项,可以根据自己的喜好来决11.4.3视图控是用户界面)XcodeButton是用户界面)XcodeButtonFun分组应该已经展开了(3-3所示。Button4个源代码文件(以.h或者.m结尾)storyboard文件和一个包xcassets4个源代码文件实现了应用程序所需的两个类:应用程序委托(applicationdelegate),以及用于这个应用仅有的一个视图的视图控制器。再次提醒一下,Xcode为所有的类都自动添加了之前指定的类名前缀(BID)XcodeBIDViewControllerBIDViewController部分则表明这个类是一个视图控制器。点击分组和文件(Groups&Files)面板中的BIDViewControllerUIViewControllerUIViewControllerUIKitXcode 输出接口和操作方2Xcode 输出接口和操作方2Xcode(outlet)nib了。本章会详细介绍这个方法。另一方面,可以对nib文件中的界面对象进行设置,以触发控制器类中的某些特殊方法。这些特殊方法称为操作方法(actionmethod),或者简称为操作(action)。例如,可以在界面构建器中进行设置,Xcode定好,然后再使用界面构建器与将它们与相应的代码关联起来。Xcode的辅助视iOS输出接Objective-CIBOutlet(classextension)这个例子声明了一个名为myButton的输出接口,可以让它指向界面构建器中的任何按钮。IBOutletObjective-C(classextension)这个例子声明了一个名为myButton的输出接口,可以让它指向界面构建器中的任何按钮。IBOutletObjective-C内置的关键字,仅仅是一个简单的C是不是感到很困惑?对于编译器来说,IBOutlet什么作用都没有。它唯一的Xcodenibnib文件中的对象进行关联的属性,都必须使用IBOutlet关键字进行声明。幸好,Xcode能够自动创建输出接口。随着时间的推移,苹果公司改变了输出接口的声明1关键字在CocoaNeXTSTEP2IBOutlet书中的代码,把IBOutletGCCLLVM书中的代码,把IBOutletGCCLLVM(LowLevelVirtualMachine,LLVMIBOutlet关键字放在属性声明中,所以我们遵循这一方式。希望你能了解这些历史背景,以防遇到比较老的代码(IBOutlet关键字出现在实例变量的声明中)而迷惑不解。要了解Objective-C属性的更多信息,可以阅读由ScottKnasterWaqarMalikMarkDalrympleObjective-C基础教程(2IntroductiontotheObjective-CProgrammingLanguage”(/2.操作IBAction的特殊方法,返回类型nib文件中的控件触发。操作方法的声明通常如IBActionvoid。返回类型为void的方法不返回任何值。而且,操作方法要么不接受任何参数,要么只接受一个参数(sender)。sendersender指向触发该方法的对象。例如,如sender指向触发该方法的对象。例如,如果用户按下某个按钮时触发了这个操作法,那么sendersender Cocoa和senderiOS代码(尤其在项目导航面板中单击BIDViewController.m,打开这个实现文件。可以看viewDidLoaddidReceiveMemoryWarning等方法的样板代码,这是由创建项目时选择的项目模板提供的。在UIViewController的子类中Xcode提供了这些基本的代码片段,如果需要的话,Objective-C分类(category)声明,可以在其中声明方法和属性,但是这些方法implementation块中使用。本书后面会用到类扩展,但是现在并不需要,所以应该把这个空的@interface.@end块删除。完成之后,实Main.storyboard的界面构建器中打开应用程序的视图(3-4Main.storyboard的界面构建器中打开应用程序的视图(3-4)。你可能还记得上一章提到,3-1参数(之前的“操作方法”一节讨论过)来区分这两个按钮。除了操作方Xcode1.添加按钮和操作1.添加按钮和操作方Xcodecontrol+option+command+3)打开对象库。在对象库的搜索框中输入UIButton(4UIBuUIButton了),3-5把3-1引导线可以帮助你遵循iOSHumanInterfaceGuidelines(通常简称为HIG)。苹果的3-1引导线可以帮助你遵循iOSHumanInterfaceGuidelines(通常简称为HIG)。苹果的HIG可以帮助用户更好地设计iPhone和iPad应用程序。HIG会告诉你应该包含了很多有用的信息,这是每个iOS开发者都应该了解的。可以在以下地址找双击新添加的按钮,可以编辑按钮标题,将其标题设为Left。现在该Xcode发挥作用了。选择View➤AssistantEditor➤ShowAssistantEditor(或者按下option+command+return)7个按钮,可以点击最左边一组按钮中间的按钮,显示或者隐藏辅助编辑器(3-6)辅助编辑器会出现在编辑面板的右侧,除非你特别指定辅助编辑器的位置(BIDViewController.h如果你的显示器屏幕比较小(MacBookAir上的显示器),utility视图或项目导航面板,从而获得足够的空间,有效地使用辅助编辑器。可以通过项目导航窗口右上角的3个视图按钮方便地完成这个操作(参见图3-6)。ViewControllerXcodeViewControllerXcodeBIDViewControllerUIViewControllerXcode在上面的跳转栏中选择BIDViewController.h文件。首先,点击新添加的按钮以选control键不放开,接着用鼠标把按钮拖向辅助编辑器编辑器中的头文件、File’sOwner图标、编辑面板左侧的任何其他图标,甚至是编辑区域中的其他对象。如果把指针移动到@interface和@end关键字之间(参见图3-7),就会弹出一个灰色的提示框,告诉你如果在这里放开鼠标的话可以插入编辑器中的头文件、File’sOwner图标、编辑面板左侧的任何其他图标,甚至是编辑区域中的其他对象。如果把指针移动到@interface和@end关键字之间(参见图3-7),就会弹出一个灰色的提示框,告诉你如果在这里放开鼠标的话可以插入NSArray3-8ConnectionOutletActionXcode,我们要创建的是一个操3-9NamereturnreturnTabTypeUIButtonididObjective-CTypeididObjective-CTypeidid即可。在本例中,我们只会通过按钮对象调用这个方法,所以应该将其改为UIButtonXcode和LLVM知道我们的意图。现Type下面还有两个字段,保留它们的默认值即可。在Event字段中指定什么时候调用这个方法。默认值TouchUpInside仅会在用户的手指离开屏幕(且用户的手指在离开屏Argumentssenderreturn就是XcodeBIDViewController.hBIDViewController.mXcodeXcodeBIDViewController.mXcodeXcodeMain.storyboard标题改为助编辑器。无所谓是当前是.h文件还是.mbuttonPressed:buttonPressed:ConnectAction的灰色提示框(3-10)。XcodebuttonPressed:方法。再说一遍,如果用这种方式把按钮拖曳到实现文件(.m文件)中的操作方法,效果也是一样的。也就是说,按住control键拖曳按钮时,BIDViewController.hbuttonPressed方法声明上,也可以拖向BIDViewController.m文件中的buttonPressed方法实现上。Xcode真是太智能2.添加标签和输2.添加标签和输出接LabelLabel(11)。把Label拖曳到用户界面中,放置在两个按钮的上方。然后,调整标签的标签中的文本默认是左对齐的,但是我们希望它居中对齐。选择View➤UtilitiesShowAttributesInspector(option+command+4)打开属性检查器(3-12)Alignment中了标签的文本),deletereturn键提交更改。这样一来,标签在未选中时就看不到了,不过不用担心,BIDViewController.hBIDViewController.hcontrol3-13你将再次看到图3-8所示的弹出窗口。我们要创建一个输出接口,所以保留ConnectionOutlet。并且要为这个输出接口指定一个描述性的名称,以便在编写代码时能够知道这个输出接口的作用。在Na

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论