内联日期选择器在第二次尝试时崩溃

时间:2014-04-08 11:36:59

标签: ios objective-c uitableview tableview

我已经为这个问题苦苦挣扎了两个星期了。但是在StackOverflow人员的帮助下,我提出了95%的成功实施..

Here is my problem ..现在我可以在选择日期时使用选择器单元[第一个单元格]加载我的结果。

现在我有另一个问题......当我第一次运行我的应用程序时,它按预期工作..但是当我点击第一个单元格来选择不同的日期时,应用程序崩溃了..

Here是日志输出...

下面是我的实施代码

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

 NSDictionary* reqFdate= [ScheduleView getRequestForDate];

if (reqFdate.count == 0) {
    NSInteger numberOfRows = [self.persons count];

    if ([self datePickerIsShown]){

        numberOfRows++;

    }

    return numberOfRows;
}
else{

    return reqFdate.count + 1;
}

}




  - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
  {


    UITableViewCell *cell;

    NSDate *today = [NSDate date];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    // display in 12HR/24HR (i.e. 11:25PM or 23:25) format according to User Settings
    [dateFormatter setTimeStyle:NSDateFormatterShortStyle];
    NSString *currentTime = [dateFormatter stringFromDate:today];
    NSDate *date=[dateFormatter dateFromString:currentTime];



    if(indexPath.row==0){
        VCPerson *person = self.persons[0];

        cell = [self createPersonCell:person];

    }



    else if ([self datePickerIsShown] && (self.datePickerIndexPath.row == 1)){

        // VCPerson *person = self.persons[indexPath.row -1];



        cell = [self createPickerCell:date];

    }

    else{

        cellForDatePickCell *cell = (cellForDatePickCell*)[self.tableView dequeueReusableCellWithIdentifier:kOtherCellIdentifier];
        cell.delegate_Dtepick = self;

        return cell;

    }


    if(indexPath.section!=0 && tapfirstCell) {

        UITableViewCell *cell = (UITableViewCell*)[self.tableView dequeueReusableCellWithIdentifier:kOtherCellIdentifier forIndexPath:indexPath];
        //cell.delegate_Dtepick = self;
        NSDictionary *dictionary = [_dataArray objectAtIndex:indexPath.section];
        NSArray *array = [dictionary objectForKey:@"data"];
        NSString *cellValue = [array objectAtIndex:indexPath.row];
        cell.textLabel.text =cellValue;

    }

    return cell;



}


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




[self.tableView beginUpdates];

if ([self datePickerIsShown] && (self.datePickerIndexPath.row - 1 == indexPath.row)){

    [self hideExistingPicker];
   // [self.tableView reloadData];
    //[self viewDidLoad];



    //call the service and take the results





    NSString* selecteDate = [ScheduleView getDate];

    NSString* prsonID =[LoginView getPersonID];

    NSDictionary* parms = [NSDictionary dictionaryWithObjectsAndKeys:prsonID,@"caregiverPersonId",selecteDate,@"selectedDate", nil];

    jsonpaser* jp = [[jsonpaser alloc]init];

    [jp getWebServiceResponce:@"http://qa.vardle.com/Mobile/WebServices/AppointmentService.asmx/GetAppointments" :parms success:^(NSDictionary *responseObject)
     {



         requestsF_date = responseObject;
         NSLog(@"RESPONSEFORDATE_IN DIDSELECT :%@",requestsF_date);
         NSArray* indexpaths = [self getIndexPaths];
         NSLog(@"indexPATHS %@",indexpaths);
         [self.tableView reloadData];

     }];






    // cellForDatePickCell *cell = (cellForDatePickCell*)[self.tableView dequeueReusableCellWithIdentifier:kOtherCellIdentifier forIndexPath:indexPath];
    // cell.delegate_Dtepick = self;
    //tapfirstCell = true;
   /*
   cellForDatePickCell *cell=(cellForDatePickCell*)[tableView cellForRowAtIndexPath:indexPath];
    if(![cell.textLabel.text isEqualToString:@"5/23/14"])
    {
        return; 
    }
  */


    if (tapfirstCell==false) {
        tapfirstCell = true;
    }
    else{
        tapfirstCell = false;
    }




}else {

    NSIndexPath *newPickerIndexPath = [self calculateIndexPathForNewPicker:indexPath];

    if ([self datePickerIsShown]){

        [self hideExistingPicker];



    }

    [self showNewPickerAtIndex:newPickerIndexPath];

    self.datePickerIndexPath = [NSIndexPath indexPathForRow:newPickerIndexPath.row + 1 inSection:0];

}

[self.tableView deselectRowAtIndexPath:indexPath animated:YES];

[self.tableView endUpdates];

}

请有人告诉我问题出在哪里..当我第二次尝试选择约会时应用程序崩溃了什么..

请帮助

1 个答案:

答案 0 :(得分:0)

我修复了我的问题...在我开始再次显示日期选择器之前,我没有删除行..

here is the full code

这里我做的是:我使用内联日期选择器与表格视图[日期选择器将通过选择表格视图的第一个单元格显示]。根据从选择器中选择的日期,我在下面显示我的自定义单元格第一个单元格。[因为第一个单元格总是从日期选择器中选择日期]。

如果有人想做同样的事情我认为我的代码会帮助你

谢谢