根据Label的(动态)值设置UILocalNotification的FireDate

时间:2013-07-15 05:01:00

标签: ios uilocalnotification custom-cell

我的问题是我有一个包含标签的自定义单元格。 label的值将通过webServices获取,这将在TIME中。最初如果我们通过静态数据,例如:10:54 PM,那么点击该单元格时,它应该设置我在标签上设置的值的提醒。当然,应该在上述时间通知我。

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

    CC *cell=(CC*)[tableView cellForRowAtIndexPath:indexPath];

    NSDate *currentDate=[NSDate date];

    NSString *dateStr= cell.timeLabel.text;

    UILocalNotification *localNotification =[[UILocalNotification alloc]init];

    NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setLocale:[NSLocale currentLocale]];
    [dateFormatter setDateStyle:NSDateFormatterNoStyle];
    [dateFormatter setTimeStyle:NSDateFormatterShortStyle];
    [dateFormatter setDateFormat:@"hh:mm a"];
    [dateFormatter setTimeZone:gmt];

    [dateFormatter setDateFormat:@"yyyy-MM-dd"];
    NSString *preFix=[dateFormatter stringFromDate:currentDate];
    NSString *datetoFire=[NSString stringWithFormat:@"%@ %@",preFix,dateStr];

    [dateFormatter setDateFormat:@"yyyy-MM-dd hh:mm a"];

    NSLog(@"date is %@",[dateFormatter dateFromString:datetoFire]);


    if (localNotification==nil) {
        return;
    }


    localNotification.fireDate=[dateFormatter dateFromString:datetoFire];
    localNotification.timeZone=[NSTimeZone defaultTimeZone];
    localNotification.alertBody=@"Good Morning dude..!";
    localNotification.repeatInterval=0; //The default value is 0, which means don't repeat.
    localNotification.soundName=UILocalNotificationDefaultSoundName;
    [[UIApplication sharedApplication]scheduleLocalNotification:localNotification];

}



- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    CC *cell = (CC *) [tableView dequeueReusableCellWithIdentifier:@"CC"];
    if (cell == nil) {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CC" owner:self options:nil];
        cell = (CC *) [nib objectAtIndex:0];
    }


    return cell;
}

我试过这样做,但这不起作用。

谢谢。

1 个答案:

答案 0 :(得分:0)

获取一个动态数组,该数组将包含从webservice填充的值,并在您的单元格中动态填充填充时间。在cellForRow方法中。

我已经采用了静态数组,如下所示

time = [[NSMutableArray alloc] initWithObjects:@"5:35 PM",@"4:56 AM",@"6:00 PM",@"7:32 AM",nil];

您必须动态地将值放入此数组中,因为您将从Web服务获取填充数据。 并重新加载表。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    CC *cell = (CC *) [tableView dequeueReusableCellWithIdentifier:@"CC"];
    if (cell == nil) {
        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CC" owner:self options:nil];
        cell = (CC *) [nib objectAtIndex:0];
    }

    cell.textLabel.text=[time objectAtIndex:indexPath.row];

    return cell;
}

并且在select方法中,将数组中的起始日期指定为

,而不是从单元格文本标签中指定
NSString *dateStr=[time objectAtIndex:indexPath.row];