В моем приложении я хочу отобразить две пользовательские ячейки в одном представлении таблицы с выбором сегмента. Когда пользователь нажимает на сегмент = 0, отображает первую пользовательскую ячейку, а сегмент = 1 отображает вторую пользовательскую ячейку. Вот мой код.Как сохранить две пользовательские ячейки в одном представлении таблицы с сегментированным контролем?
-(void)callSegmentSelected
{
value = (int)segment.selectedSegmentIndex;
if (segment.selectedSegmentIndex == 0)
{
NSString *UDID = [[NSUserDefaults standardUserDefaults]objectForKey:@"kPrefKeyForUserID"];
NSString *catId = [[NSUserDefaults standardUserDefaults]objectForKey:@"kPrefKeyForCatID"];
NSString *sessionKey = @"akjsda9s8dadandlakd9";
NSString *urlString = [NSString stringWithFormat:@"API"];
NSString *jsonString = [NSString stringWithFormat:GETCONTEST,catId,UDID,sessionKey];
NSData *myJSONData =[jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"POST"];
NSMutableData *body = [NSMutableData data];
[body appendData:[NSData dataWithData:myJSONData]];
[request setHTTPBody:body];
NSError *error;
NSURLResponse *response;
NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSString *str=[[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];
if(str.length > 0)
{
NSData* data = [str dataUsingEncoding:NSUTF8StringEncoding];
NSError *error;
NSLog(@"%@", [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error]);
fldExamTitleArray =[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[NSString stringWithFormat:@"%d", [[[fldExamTitleArray objectAtIndex:0] valueForKey:@"examid"] intValue]] forKey:@"kPrefKeyForExamID"];
NSLog(@"Examid: %@", [defaults objectForKey:@"kPrefKeyForExamID"]);
[defaults synchronize];
[progressHud hide:YES];
[self.myContestTableView reloadData];
}
else
{
NSLog(@"Error");
}
}
else if (segment.selectedSegmentIndex == 1)
{
}
else if (segment.selectedSegmentIndex == 2)
{
}
и здесь cellForRowAtIndexPath
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (value == 0)
{
static NSString *cellId = @"Cell";
ContestTableViewCell * cell = (ContestTableViewCell *)[myContestTableView dequeueReusableCellWithIdentifier:cellId];
if (cell == nil)
{
NSArray *myNib;
myNib = [[NSBundle mainBundle]loadNibNamed:@"ContestTableViewCell" owner:self options:nil];
cell = [myNib objectAtIndex:0];
}
cell.fldExamTitleLbl.text = [[fldExamTitleArray objectAtIndex:indexPath.row]valueForKey:@"fldexamtitle"];
}
else
{
if (value == 1)
{
static NSString * cellIdentifier = @"Cell2";
ContestRewardCell *cell = (ContestRewardCell *)[myContestTableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil)
{
NSArray *myNib;
myNib = [[NSBundle mainBundle]loadNibNamed:@"ContestRewardCell" owner:self options:nil];
cell =[myNib objectAtIndex:0];
}
cell.examTitleLbl.text = [[fldExamTitleArray objectAtIndex:indexPath.row]valueForKey:@"fldexamtitle"];
}
return nil;
}
я получаю эту ошибку,
Нагрузочного приложение из-за неперехваченное исключение 'NSInternalInconsistencyException', причина: «UITableView (; слой =; contentOffset: { 0, 0}; contentSize: {320, 468}>) не удалось получить ячейку из своего dataSource() '
Здесь я не внедряю этот метод, так что данные не отображаются в моем столе.
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (value1 == 0)
{
return 102;
}
else if(value1 == 1)
{
return 193;
}
return 0;
}
Где возвращение клетки? вы всегда возвращаете ноль! Вопрос показывает отсутствие отладки с конца OP. – Vizllx
BTW - вы не приняли ни одного ответа на любой из ваших прошлых вопросов. Вы действительно должны вернуться и принять любой ответ, который разрешил ваши вопросы. – rmaddy
@rmaddy, который отвечает не для меня. –