APPLE WATCH 中文手册:APPLE WatchKit Apps--表格

1418720197791879

本文翻译自Apple Watch Programming Guide:WatchKit Apps--Tables,敬请勘误。

使用table展示内容可动态更改的列表数据。WatchKit 仅支持使用WKInterfaceTable类的单列表格。想要在table中展示数据,需要先为数据定义布局,并在运行时通过编码填写表数据。您需要在Xcode工程中做以下事情:

在storyboard文件中:

  • 给界面控制器场景添加table对象,并在界面控制器中为table创建一个outlet。
  • 像Configuring Row Types描述的那样为table配置一个或多个row types。

在代码中:

您可以为每个table定义多个行类型,每种类型都有不同的外观。在运行时,您可以指定所需行类型以及它们在table中的排列顺序。对于如何配置table的详细信息,请参看WKInterfaceTable Class Reference.

配置Row Types

Row Type是一个在table中以单行形式展示数据的模板。每个table必须至少有一个row type,您可以根据需求定义额外的row type。您可以用row type区分table中的不同内容。比如您可能在内容行上、标题和注脚上使用不同的类型。当您为界面控制器场景添加table时,Xcode会自动创建初始的row types供您配置。

为table添加row  types:

  • 在storyboard文件中选中table对象
  • 打开Attributes inspector.
  • 使用Rows属性更改可用row type数量。

每个row type最初都包含一个单个组元素。您可以为该组元素添加标签、图片以及其他所需对象。标签和图片的真实内容通常是无关紧要的。在运行时,作为配置工作的一部分,您可以替换界面对象的内容。

想要在运行时管理表格行的内容,您需要提供一个自定义的row controller 类。大部分row controller类包含少量代码,或者根本就不包含代码,它们主要用来访问那些包含界面对象的outlets。不过,如果您在表格行中添加了按钮或者其他控件,那么其类也会包含一些动作方法,以响应用户与控件的交互。

为row type定义一个row controller类:

  • 为WatchKit扩展添加一个新的Cocoa Touch类
  • 让新类继承NSObject
  • 为每个计划在运行时访问的标签、图片或者控件添加声明的属性。声明属性可使用以下格式,请更改类以匹配相应的界面对象:
@property (weak, nonatomic) IBOutlet WKInterfaceLabel* label;

Listing 10-1 展示了一个用于管理row type的示例类

@interface MainRowType : NSObject
@property (weak, nonatomic) IBOutlet WKInterfaceLabel* rowDescription;
@property (weak, nonatomic) IBOutlet WKInterfaceImage* rowIcon;
@end

您可以在storyboard文件中完成row type配置。配置表格行要求设置其类,并将任何outlets连接到对应的界面对象上。您还必须提供一个方法,以便通过命名row type在运行时辨别表格行。

在storyboard中配置row type:

  • 在storyboard文件中选中row controller对象。
  • 将row controller的Identifier属性设置为唯一值,随后您会在创建表格行时使用该标识符。

在行类型中该值必须是唯一的,但是实际值还是由您来定夺。在Attributes inspector中设置该值。

  • 将row type的类设置为您的自定义类。您需要在Identity inspector中设置类信息。

将row type元素和类中对应的outlets连接起来。

  • 将storyboard文件中的项目和outlets连接并绑定。当您在代码中配置table时,WatchKit会在运行时使用该信息实例化对应的类。

Figure 10-1 在Xcode中配置一个命名为"Main Row Type"的row type,并设置为使用Listing 10-1中定义的MainRowType类。该类中的rowDescription 和rowIcon outlets被连接到行中的图片和标签。

1418720785829419

运行时配置table内容

在运行时,您可以为table添加表格行并以编程形式配置其内容。通常,添加并配置表格行是初始化界面控制器过程中的一部分。

创建并配置列表行

  • 先决定你需要创建的行的数目和类型,这取决于你想要展示的数据类型。
  • 使用setRowTypes:或者setNumberOfRaws:withRowType:方法来创建。这两个方法都会在界面上创建新的列表行,并且会在WatchKit扩展中实例化对应的类。这些实例被保存在table中,且可通过rowControllerAtIndex:方法访问。
  • 使用rowControllerAtIndex:方法遍历表格中的每一行。
  • 使用row controller对象来配置每一行中的内容。

setRowType:和setNumberOfRaws:withRowType:方法实例化与storyboard文件中对应的行类型相关的类。在调用这些方法之后,紧接着就可以直接获取最新创建的row controller对象了,当然还可以通过这些对象来设置内容。下面的Listing 10-2这段代码则是一个能创建新行并对其进行配置的简单示例。在这个例子里,使用的是在代码Listing 10-1中定义的MainRowType类,以及自定义的MyDataObject类,MyDataObject类用于提供table中用于行内容的数据。在setNumberOfRaws:withRowType:方法中设置好数据对象之后,代码会遍历该对象,并使用它们配置表格中每一行的内容。

Listing 10-2 创建并配置table中的行

- (void)configureTableWithData:(NSArray*)dataObjects {
    [self.table setNumberOfRows:[dataObjects count] withRowType:@"mainRowType"];
    for (NSInteger i = 0; i < self.table.numberOfRows; i++) {
        MainRowType* theRow = [self.table rowControllerAtIndex:i];
        MyDataObject* dataObj = [dataObjects objectAtIndex:i];
 
        [theRow.rowDescription setText:dataObj.text];
        [theRow.rowIcon setImage:dataObj.image];
    }
}

表格行的选中处理

界面控制器负责处理table中的行选中操作。当用户点击table中的某一行,WatchKit会选中该行并调用WatchKit扩展中正确的方法。您可以在以下地方处理表格行的选中操作:

您可以使用以上两者之一来处理行选中事件。如果您的界面控制器有多个table,那推荐使用一个动作方法,因为您无需判定操作跟哪个table有关。如果您使用了一个动作方法,那需要遵循下面的语法:

- (IBAction)myTableAction:(NSInteger)rowIndex

通过选中表格行来执行app相关的任何操作,比如跳转新界面,或者更新行中显示的内容。如果您不希望用户选中表格行,可以在Storyboard中禁用相应的row controller的Selectable选项。

原创文章,作者:ioued,如若转载,请注明出处:https://www.iamue.com/6258/

(0)
iouedioued
上一篇 2015-06-15 10:08
下一篇 2015-06-15 11:12

相关推荐

  • 从第三代锁屏,看移动端交互设计的未来趋势

    每年的梅花网传播业大展都是传播业界的一大盛事,我们不仅能看到过去一年整个市场和行业的进步与创新;也会看到互联网、移动互联网催生的一系列产品,它们共同预示着未来的发展方向。今年的梅花网传播业大展上,我…

    2017-08-01
  • 交互设计七大定律之席克定律

    最近在整理交互设计七大定律,发现了这篇老文,内容很精彩,翻译下与大家分享。 最近在整理交互设计七大定律,文章要系统的看。 目录:【交互设计七大定律】关于交互设计法则“除非有更好的选择,否则就遵从标准——交…

    2015-08-27
  • 为了更好的用户体验,谷歌拿出了“大棒”与“胡萝卜”

    点击关注36氪,置顶公众号专业的行业新闻及深度报道,不容错过━━━━━━这是著名分析师Ben Thompson对谷歌近期宣布的一组数据的评论,原标题为“THE AGGREGATOR PARADOX”以下为谷歌宣布的这组数据:现在共有3100万个网站加入了加速移动页面(AMP)计划,自去年10月以来增长了25%。在2月的第1周,谷歌向出版商发送了4.66亿个页面浏览量——比2017年1月增加了近40%。我们希望通过这样一篇文章,来带你了解...

    2018-02-27
  • 车载系统交互设计畅想Part1:仪表数据展示

    智能车载系统的概念变得越来越火热,智能驾驶的理念也越来越普及。现阶段,国内外各大互联网巨头都在联合传统汽车企业一起探索智能汽车的设计研发。可以预见的是,在不久的将来,驾驶员在车内将更加自由,就像智能手机一样,智能汽车将为驾驶员带来前所未有的丰富体验。本文作者Adhithya,通过一系列的访谈调研,探索现阶段驾驶员在驾驶过程中的行为方式,并依此为未来的智能车载系统的交互方式设计提供了科学的思路。“我知道在手动挡车上转速表的作用,但当我换了自动挡后我就很少去看它了“
    ——被采访人1
    ”我并没有真正的去关注过它,对我来说,这部分信息没有什么意义。“
    ——-被采访人2
    ”可能在爬坡的路面上我会看一下转速表了解一下车况,但当我在城市里平坦的路况行驶时,我很少会看它。“
    ——-被采访人3

    2017-05-01
  • 译文推荐:设计并非艺术

    “设计并非艺术”的观点让我有些困惑,与我一直以来的认知有些不同。我确实认同艺术是独立于现实目的而存在的创意表达方式,而另一方面,设计虽然有着明确的现实目标,但它不同样也是创意的展示形式吗?我目前很难完全认同你的观点,希望进行更多交流。

    2017-05-27
  • 动态与富态

    一、动态:动画表达的设计应用 ”动态“的设计常常能使页面的呈现更加动感,有活力,富有吸引力。具体来说,”动态”的设计在产品应用中常用于以下几种情形: 1.1. 丰富内涵 先试试为这段产品介绍做设计: Dropbox可让…

    2015-10-08
  • Axure RP 8软件安装视频教程

    Axure RP 8下载地址:链接:https://pan.baidu.com/s/1smi2vvf密码:l2oj安装中有问题请咨询私人微信:152374906801、双击打开此文件2、点击next3、选择i  agree然后点击next4、点击bowse更改存储位置建议不要放在C盘然后点击next5、点击next6、点击next7、等待安装8、取消勾选Run Axure RP 8,然后点击Finish9、打开软件的安装目录把复制的la...

    2018-03-04
  • 腾讯高级交互设计师:什么是优秀的设计思维与方法?

    在年轻设计师里普遍存在工作方式和思维方式问题。 编者按:本文系腾讯高级交互设计师秦银(微信公众号“G思维”,ID:DesignG),在Boss直聘主办的直聘学院「对话UI&UX设计」活动上的分享整理,介绍如何把握设计…

    2017-07-28
  • 以手机淘宝为例,看原型图易缺失的交互场景

    Echo :以iOS版手机淘宝历史搜索为例,本文作者希望通过展示的原型图来讨论易遗漏的交互场景,让读者得到收获,并总结出以后如何避免遗漏交互细节与定义。

    2017-09-29
  • 对交互设计的思考(译文)

    本文是一篇译文,介绍了国外设计师对于交互设计师的现状和他认为的理想状态的思考。老外的思路还是比较清奇的,在这里介绍给大家。数字革命对于有好奇心的人来说就像是淘金热。没有人知道数字媒体究竟是什么,但它实实在在的深刻影响着我们的生活。 它是一个新的未知的领域,等待用新的艺术形式,设计和方式来填充,以更好地了解这个世界。然后,世界就变成了下面这样:这是怎么回事?1.基于技术思维的交互设计交互设计从数字技术革命中应运而生。所以就像工程师一样,设...

    2018-02-02