接下来实现EDStarrating的编辑。 在loadVIEw 方法中,我们已经配置了EDStarrating的delegate属性,我们仅仅需要实现相关委托方法即可。
打开MasterVIEwController.swift在 EDStarratingProtocol扩展中添加如下方法:
func staRSSelectionChanged(control: EDStarrating!,rating: float) { if let selectedDoc = selectedBUGDoc() { selectedDoc.data.rating = Double(self.BUGrating.rating) } } |
跟前面几乎一样: 获得用户选定的昆虫模型,用修改后的值赋值给它。
运行程序。需要注意的是,用户设定新的评级后这个值是被持久化的,哪怕你切换到其他昆虫然后有切换回来。
获取本地图片
打开MasterVIEwController.xib,拖一个“Push button” 控件到image vIEw下方。
修改按钮的Title 为 “Change Picture”:
如同加号按钮和减号按钮,为Change Picture 按钮创建一个IBAction,命名为changePicture。
这个action在按钮点击时调用。
OS X 有一个特有的控件叫做 IKPictureTaker,允许用户从计算机上选择一张图片,或者从摄像头捕捉一张图片。
当用户选择了图片之后,这个控件会调用指定的delegate方法。
打开MasterVIEwController.swift加入以下import 语句:
import Quartz |
这个 image picker属于 Quartz 框架。
在changePicture方法中,添加代码:
if let selectedDoc = selectedBUGDoc() { IKPictureTaker().beginPictureTakerSheetForWindow(self.vIEw.window, withDelegate: self, dIDEndSelector: "pictureTakerDIDEnd:returnCode:contextInfo:", contextInfo: nil) } |
我们先检查用户是否选择了有效的昆虫,如果是,显示picture taker控件。
然后实现pictureTakerDIDEnd(_:returnCode:contextInfo:)方法:
func pictureTakerDIDEnd(picker: IKPictureTaker,returnCode: NSInteger,contextInfo: UnsafePointer<VoID>) { let image = picker.outputimage() if image != nil && returnCode == NSOKbutton { self.BUGImageVIEw.image = image if let selectedDoc = selectedBUGDoc() { selectedDoc.fullimage = image selectedDoc.thumbImage = image.imageByScalingAndCropPingForSize(CGSize(wIDth: 44,height: 44)) reloadSelectedBUGRow() } } } |
首先检查用户是否点击了OK (NSOKbutton) 以及选择的图片是否有效。
如果是,获取用户选定的昆虫模型,修改昆虫的图片及缩略图,然后更新cell。
运行程序,选择一个昆虫,点击Change Picture,从本地文件或摄像头中获取一张图片,这张图片将立即在选定的cell中得到更新。
一些细节上的问题当你运行程序,视图改变窗口大小,你会发现控件并不能自动适应大小。
这是窗口拖大后的效果。
pplns:o="urn:schemas-microsoft-com:office:office"xmlns:w="urn:schemas-microsoft-com:office:word"xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"xmlns="http://www.w3.org/TR/REC-HTML40">
这是窗口缩小后的效果。
另外,我们还没有为App数据进行持久化。一旦App重启,用户对数据进行的增加和修改都会丢失。
打开MasterVIEwController.xib,将VIEw的Size缩小至最小能够足以显示所有控件的程度。
在上图中,3个按钮放在了同一排。在右边细节展示区域中,所有的控件都左对齐,且宽度一致(除了ChangePicture按钮)。
然后,我们在中间增加一个分割线。拖一个Verticalline到VIEw的中央。
复原 *** 作
复原 *** 作用于将数据恢复至原来的状态。拖一个Push 按钮在table VIEw下方,修改其标题为reset。然后打开Assistant Editor,为按钮创建一个IBAction,名为resetData(确认当前打开的源文件为MasterVIEwController.swift)。
resetData()方法加入如下代码:
setupSampleBUGs() updateDetailinfo(nil) BUGstableVIEw.reloadData() |
setupSampleBUGs()@H_79_419@方法调用会恢复所有模型数据。以nil作为参数值调用
updateDetailinfo@H_79_419@方法将清除所有细节字段。然后刷新table VIEw。
运行程序,添加、删除或修改任意数据。然后点击reset按钮,所有数据又恢复原样。
总结以上是内存溢出为你收集整理的用Swift开发Mac App(6)全部内容,希望文章能够帮你解决用Swift开发Mac App(6)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)