2014-04-08 51 views
1

我一直在为这个问题挣扎两周。但在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]; 

}

请别人代码告诉我是当我尝试选择一个日期第二次issue..why应用程序是崩溃..

请帮助

+0

坠毁BCZ您要插入或删除一些指标,在实际不阵列或那个你正试图去除的地方。用NSlog检查你的数组有多少值,以及哪个索引实际存在以及你试图删除或添加哪个索引。 –

回答

0

我已经解决我的问题......我没有删除的行之前,我开始再次显示的日期选择器..

here is the full code

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

,如果有人想这样做,我做到了,我认为我的代码将帮助您

同样的事情,谢谢

相关问题