-1

我正在制作一个具有 tableview 的 iPhone 应用程序。表格视图需要在一年中的不同日子显示不同的信息。

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

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

请帮忙

4

1 回答 1

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;

}

您可以修改谓词以检查日期是否在本周,或者您需要的任何内容。

PS不要忘记发布_eventsArraydealloc

于 2013-07-10T15:27:11.030 回答