创建自定义格式化器 <- 数据格式化指南

你可以创建自定义的NSFormatter的子类,来格式化除日期和数字之外的数据的表示法。

想要子类化NSFormatter,你必须至少重写如下方法:

  • stringForObjectValue:
  • getObjectValue:forString:errorDescription:

在第一方法中,你把单元格(cell)的对象转换成字符串表示法;在第二种方法中,你把字符串转换为与单元格关联的对象。

你也可以重写attributedStringForObjectValue:withDefaultAttributes:来把对象转换为与之有相关属性的字符串。例如,如果你想把负的总金额显示为红色,你使用该方法返回红色文本属性的字符串。在attributedStringForObjectValue:withDefaultAttributes:方法中,通过调用stringForObjectValue:方法得到无属性的字符串,然后给该字符串设置适当的属性。

如果编辑的字符串必须和显示的字符串不同(例如,货币字段的显示版本显示的是美元符号,但是编辑版本不是),除了stirngForObjectValue:之外,还可以实现editingStringForObjectValue:。

在OS X中,使用 isPartialStringValid:proposedSelectedRange:originalString:originalSelectedRange:errorDescription: 和 isPartialStringValid:newEditingString:errorDescription:,你可以在每个键按下的时候编辑单元格的原文内容,并防止用户输入无效的字符。你可以将此动态编辑应用于社会保障号码;数据录入人员只需要输入数字一次,因为格式化器会自动插入分隔字符。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 翻译自“Collection View Programming Guide for iOS” 0 关于iOS集合视...
    lakerszhy阅读 3,920评论 1 22
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,765评论 18 399
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,270评论 0 4
  • 不说,说了就错。说了就有了评价。 日子过的,是有种外界的牵制和影响。自己所码的文字,也说明了这一点。还有,看微信公...
    大李员外阅读 235评论 0 0
  • 作为一个毕业好多年的人,每年到毕业季,都会有些事提醒我——要毕业了。透过楼道的窗户能看到一群穿着学士服的人照集体照...
    辅仁淑凡官方微博阅读 313评论 0 0