0

我正在使用 JSON 将共享 Google 日历中的事件添加到我的应用程序中。在某些日期有 2 个或更多事件。正如您在此处看到的 - 日期(在 {gd$when}、{startDate} 下找到的格式很长(2013-04-28T19:00:00.000+02:00)。我需要每个部分都是日期格式为 dd-MM-yy。然后 cell.textLabel.Text 将是 Title/$t,而 cell.detailTextLabel.Text 将是 gd$when/startTime 的时间 (hh:mm)。我只会想要显示等于或晚于今天日期的那些。

我玩过它,以匹配 raywenderlich.com 上的教程。我的代码现在看起来像这样,但我还没有将它实现到 tableviewcontroller

#define kBgQueue dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)

#define googleURL [NSURL URLWithString: @"http://www.google.com/calendar/feeds/kao1d80fd2u5kh7268caop11o4%40group.calendar.google.com/public/full?alt=json"]

#import "ViewController.h"

@interface ViewController () {
    IBOutlet UILabel* humanReadble;
    IBOutlet UILabel* jsonSummary;
}

@end

@implementation ViewController

-(void)viewDidLoad
{
    [super viewDidLoad];
    dispatch_async(kBgQueue, ^{
        NSData* data = [NSData dataWithContentsOfURL:googleURL];

        [self performSelectorOnMainThread:@selector(fetchedData:) withObject:data waitUntilDone:YES];
    });
}

- (void)fetchedData:(NSData *)responseData {
    //parse out the JSON data
    NSError* error;
    NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];

    NSArray* feed = [json valueForKeyPath:@"feed.entry"];
    NSLog(@"feed: %@", feed);
    for (int i=0; i<[feed count]; i++) {
        NSDictionary* event = [feed objectAtIndex:i];
        NSString* eventTitle = [event valueForKeyPath:@"title.$t"];
            NSLog(@"Title: %@", eventTitle);
    }
}

@end

如果有人可以指点一下 - 特别是关于我将如何从日期开始创建这些部分,将不胜感激

4

1 回答 1

0

正如我的建议对您所说的那样,当您获得获得的日期数时创建部分数,并且在每个部分中您必须放置事件数,即每个部分的行数。您将在

-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

然后像这样放置每个标题的视图-

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{
    headerView=[[UIView alloc] init];
    headerView.tag=section+1000;
    headerView.backgroundColor=[UIColor clearColor];


    UILabel *labelInHeader=[[UILabel alloc] init];
    labelInHeader.backgroundColor=[UIColor clearColor];

    labelInHeader.adjustsFontSizeToFitWidth=YES;
    labelInHeader.minimumScaleFactor=13.00;

    labelInHeader.textColor=[UIColor blackColor];
    labelInHeader.textAlignment=NSTextAlignmentCenter;
    labelInHeader.font=[UIFont fontWithName:FONTCENTURYGOTHICBOLD size:20.0];

    labelInHeader.frame=CGRectMake(30, 0, 229,47);
    labelInHeader.lineBreakMode=NSLineBreakByWordWrapping;
    labelInHeader.numberOfLines=2;

    [headerView addSubview:labelInHeader];
    return headerView;
}

希望这可以帮助。

于 2013-05-15T10:23:35.457 回答