我正在制作一款带有桌面视图的iPhone应用程序。 tableview需要在一年中的不同日期显示不同的信息。
我似乎无法弄清楚如何告诉tableview要显示哪些数据。
例如,运动夹具将根据一年中的哪一周加载不同的信息。
请帮忙
答案 0 :(得分:0)
您可以拥有一系列NSDictionary
项目,并拥有一个用于存储活动日期的关键字“日期”。在init的某处,您可以使用NSPredicate
过滤数据源数组。像这样:
- (id)initWithNibName: (NSString*)nibNameOrNil bundle: (NSBundle*)nibBundleOrNil {
self = [super initWithNibName: nibNameOrNil bundle: nibBundleOrNil];
if (self) {
// Custom initialization
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy-MM-dd";
_eventsArray = [[NSArray alloc] initWithObjects:
[NSDictionary dictionaryWithObjectsAndKeys:
@"Christmas event", @"name",
[formatter dateFromString: @"2013-12-25"], @"date",
nil],
[NSDictionary dictionaryWithObjectsAndKeys:
@"New Year event", @"name",
[formatter dateFromString: @"2014-01-01"], @"date",
nil],
nil];
__block typeof(formatter) blockFormatter = formatter;
NSPredicate *predicate = [NSPredicate predicateWithBlock: ^BOOL(NSDictionary *evaluatedObject, NSDictionary *bindings) {
NSDate *date = [evaluatedObject objectForKey: @"date"];
if ([date isEqualToDate: [blockFormatter dateFromString: @"2013-12-25"]])
return YES;
return NO;
}];
_dataSource = [_eventsArray filteredArrayUsingPredicate: predicate];
[formatter release];
}
return self;
}
您可以修改谓词以检查日期是否在当前周,或者您需要的任何内容。
P.S。不要忘记在_eventsArray
中发布dealloc
。