你能从CLKRelativeDateTextProvider中提取文本吗?

时间:2015-06-25 14:36:27

标签: swift clockkit

我正在构建一组并发症,并且已经到了只有一个textProvider的CLKComplicationTemplateUtilitarianLargeFlat。

我想显示一些文字,以及相对日期。所以我试着这样做:

let date = CLKRelativeDateTextProvider(date: NSDate(), style: style, units: units)  
let template = CLKComplicationTemplateUtilitarianLargeFlat()  
template.textProvider = CLKSimpleTextProvider(text: "next: \(date)")  

但我得到的只是:

<CLKRelativeDateTextProvider: 0x79860b80>  

您可以从CLKRelativeDateTextProvider中提取原始文本,还是以某种方式将其与CLKSimpleTextProvider结合使用?

2 个答案:

答案 0 :(得分:2)

将CLKRelativeDateTextProvider对象传递给格式字符串,如Apple代码中所述:

@interface CLKTextProvider : NSObject <NSCopying>

// By passing one or more CLKTextProviders in the format substitutions, you can add text around the output of a text provider.
+ (CLKTextProvider *)textProviderWithFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1, 2);

@property (nonatomic) UIColor *tintColor;

@end

以下是一个例子:

id relativeDate = [CLKRelativeDateTextProvider textProviderWithDate:[NSDate dateWithTimeIntervalSinceNow:12 * 60]
                                                              style:CLKRelativeDateStyleNatural
                                                              units:NSCalendarUnitMinute];

template.textProvider = [CLKTextProvider textProviderWithFormat:@"next: %@", relativeDate];

日期提供程序中显示的时间仍将随着时间的推移而更新,而无需刷新任何内容。

答案 1 :(得分:-1)

使用当前版本的ClockKit,您无法从文本提供程序中提取任何字符串数据,也无法组合2个或更多文本提供程序。您可以使用的唯一文本提供者是:

  • CLKDateTextProvider
  • CLKRelativeDateTextProvider
  • CLKSimpleTextProvider
  • CLKTimeIntervalTextProvider
  • CLKTimeTextProvider

要回答您的问题,您将无法显示单词&#34; Next&#34;然后是你的并发症的日期。但是,由于ClockKit的设计方式和设计复杂数据的方式,您不应该需要显示&#34; Next&#34;一点都不您的复杂功能应该是自动显示数据中与当前时间相关的下一项。