我如何告诉uitableview要加载哪个数组取决于日期

时间:2013-07-10 11:16:11

标签: ios uitableview nsarray

我正在制作一款带有桌面视图的iPhone应用程序。 tableview需要在一年中的不同日期显示不同的信息。

我似乎无法弄清楚如何告诉tableview要显示哪些数据。

例如,运动夹具将根据一年中的哪一周加载不同的信息。

请帮忙

1 个答案:

答案 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