2015-12-12 2 views
-1

Вот мой код:Как сделать статические ячейки в контроллере табличного представления c?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    NSString *cellIdent = @"mycal"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdent]; 
    yes=(UIButton *)[cell viewWithTag:1]; 
    no=(UIButton *)[cell viewWithTag:2]; 

    /* if(cell == nil) 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdent]; 


    // Configure the cell... 
    cell.textLabel.text=[mathcal objectAtIndex:indexPath.row]; 
    if([arSelectedRows containsObject:indexPath]) { 
     cell.accessoryType = UITableViewCellAccessoryCheckmark; 
    } 
    else { 
     cell.accessoryType = UITableViewCellAccessoryNone; 
    }*/ 

    int firstNumber=0,lastNumber = 0,calculation,ans=0; 
    int todisplay= [self getRandomNumberBetween:0 to:1]; 
    NSLog(@"to display:::%d",todisplay); 
    if(finalanswers==nil) 
    { 
     finalanswers=[[NSMutableArray alloc]init]; 
    } 
    [finalanswers addObject:[NSNumber numberWithInt:todisplay]]; 
     NSLog(@"finalanswers::::%@",finalanswers); 
    calculation=[self getRandomNumberBetween:0 to:3]; 
    NSLog(@"cat value %@",mathCat); 
    if ([mathCat isEqualToString:@"Easy"]) { 
     firstNumber = [self getRandomNumberBetween:1 to:9]; 
     lastNumber = [self getRandomNumberBetween:1 to:9]; 
     // NSLog(@"firstNumber %d lastnumber %d",firstNumber,lastNumber); 
    } 
    else if ([mathCat isEqualToString:@"Medium"]){ 
     firstNumber = [self getRandomNumberBetween:10 to:99]; 
     lastNumber = [self getRandomNumberBetween:10 to:99]; 
     // NSLog(@"firstNumber %d lastnumber %d",firstNumber,lastNumber); 
    } 
    else if ([mathCat isEqualToString:@"Hard"]){ 
     firstNumber = [self getRandomNumberBetween:100 to:999]; 
     lastNumber = [self getRandomNumberBetween:100 to:999]; 
     // NSLog(@"firstNumber %d lastnumber %d",firstNumber,lastNumber); 
    } 

    // NSLog(@"calc value is --> %@",[mathcal objectAtIndex:calculation]); 




    //cell.textLabel.text = [NSString stringWithFormat: @"%d+%d=%d",firstNumber,lastNumber,todisplay]; 
    if (todisplay==0) { 
     if (calculation==0) { 
      ans=firstNumber+lastNumber; 
      answer=[NSString stringWithFormat:@"%d + %d=%d",firstNumber,lastNumber,ans]; 

      cell.textLabel.text=answer; 
      return cell; 
     } 
     else if (calculation==1){ 
      ans=firstNumber-lastNumber; 
      answer=[NSString stringWithFormat:@"%d - %d=%d",firstNumber,lastNumber,ans]; 

      cell.textLabel.text=answer; 
      return cell; 
     } 
     else if (calculation==2){ 
      ans=firstNumber*lastNumber; 
      answer=[NSString stringWithFormat:@"%d * %d=%d",firstNumber,lastNumber,ans]; 

      cell.textLabel.text=answer; 
      return cell; 
     } 
     else if (calculation==3){ 
      ans=firstNumber/lastNumber; 
      answer=[NSString stringWithFormat:@"%d/%d=%d",firstNumber,lastNumber,ans]; 

      cell.textLabel.text=answer; 
      return cell; 
     } 

    } 
    else if (todisplay==1){ 
     int ans=[self getRandomNumberBetween:10 to:50]; 
     answer=[NSString stringWithFormat:@"%d+%d=%d",firstNumber,lastNumber,ans]; 
     cell.textLabel.text=answer; 
     return cell; 
    } 

     return cell; 
} 
-(int)getRandomNumberBetween:(int)from to:(int)to { 

    return (int)from + arc4random() % (to-from+1); 
} 
+0

В чем проблема? – anhtu

+0

Я генерирую случайные вопросы, но когда я просматриваю и возвращаюсь, вопросы меняются. Я хочу сделать их статичными. только если пользователь выходит из приложения или заканчивает игру и запускает новую игру только тогда, она должна генерировать разные вопросы. – puneeth

ответ

1

Вы получаете случайные вопросы, потому что каждый раз, когда вы перечисляете и новая клетка становится видимой, вы бросаете кости и создать еще один вопрос.

Вы должны сгенерировать все случайные вопросы заранее, а не в методе cellForRowAtIndexPath.

Таким образом, вы должны создать массив случайных чисел, который ссылается на ваш массив вопросов и ответов на viewDidLoad, то же количество, что и ячейки в вашей таблице. Затем в cellForRowAtIndexPath, получите доступ к номеру в этом массиве и настройте ячейку для отображения этого вопроса.

Таким образом у вас появятся неповторимые вопросы!

Код немного запутанный, но по существу мы хотим переместить логику формирования вопроса в viewDidLoad, создать массив для хранения этих вещей, а затем прочитать его с cellForRowAtIndexPath.

- (void)viewDidLoad { 
    // GENERATING RANDOM QUESTIONS 
    firstNumbers = [NSMutableArray array]; 
    lastNumbers = [NSMutableArray array]; 

    for (int i = 0; i < [tv numberOfRowsInSection:0]; i++) { 
    int firstNumber, lastNumber; 
    if ([mathCat isEqualToString:@"Easy"]) { 
     firstNumber = [self getRandomNumberBetween:1 to:9]; 
     lastNumber = [self getRandomNumberBetween:1 to:9]; 
     // NSLog(@"firstNumber %d lastnumber %d",firstNumber,lastNumber); 
    } 
    else if ([mathCat isEqualToString:@"Medium"]){ 
     firstNumber = [self getRandomNumberBetween:10 to:99]; 
     lastNumber = [self getRandomNumberBetween:10 to:99]; 
     // NSLog(@"firstNumber %d lastnumber %d",firstNumber,lastNumber); 
    } 
    else if ([mathCat isEqualToString:@"Hard"]){ 
     firstNumber = [self getRandomNumberBetween:100 to:999]; 
     lastNumber = [self getRandomNumberBetween:100 to:999]; 
     // NSLog(@"firstNumber %d lastnumber %d",firstNumber,lastNumber); 
    } 

    [firstNumbers addObject:[NSNumber numberWithInt:firstNumber]]; 
    [lastNumbers addObject:[NSNumber numberWithInt:lastNumber]]; 
    } 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    NSString *cellIdent = @"mycal"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdent]; 
    yes=(UIButton *)[cell viewWithTag:1]; 
    no=(UIButton *)[cell viewWithTag:2]; 

    int firstNumber= [firstNumbers[indexPath.row] intValue]; 
    int lastNumber = [lastNumbers[indexPath.row] intValue]; 

    int calculation, ans=0; 
    int todisplay= [self getRandomNumberBetween:0 to:1]; 
    NSLog(@"to display:::%d",todisplay); 
    if(finalanswers==nil) { 
    finalanswers=[[NSMutableArray alloc]init]; 
    } 

    [finalanswers addObject:[NSNumber numberWithInt:todisplay]]; 
    NSLog(@"finalanswers::::%@",finalanswers); 
    calculation=[self getRandomNumberBetween:0 to:3]; 
    NSLog(@"cat value %@",mathCat); 


    // NSLog(@"calc value is --> %@",[mathcal objectAtIndex:calculation]); 

    // REMOVED GENERATION TO VIEW DID LOAD 

    //cell.textLabel.text = [NSString stringWithFormat: @"%d+%d=%d",firstNumber,lastNumber,todisplay]; 
    if (todisplay==0) { 
    if (calculation==0) { 
     ans=firstNumber+lastNumber; 
     answer=[NSString stringWithFormat:@"%d + %d=%d",firstNumber,lastNumber,ans]; 

     cell.textLabel.text=answer; 
     return cell; 
    } 
    else if (calculation==1){ 
     ans=firstNumber-lastNumber; 
     answer=[NSString stringWithFormat:@"%d - %d=%d",firstNumber,lastNumber,ans]; 

     cell.textLabel.text=answer; 
     return cell; 
    } 
    else if (calculation==2){ 
     ans=firstNumber*lastNumber; 
     answer=[NSString stringWithFormat:@"%d * %d=%d",firstNumber,lastNumber,ans]; 

     cell.textLabel.text=answer; 
     return cell; 
    } 
    else if (calculation==3){ 
     ans=firstNumber/lastNumber; 
     answer=[NSString stringWithFormat:@"%d/%d=%d",firstNumber,lastNumber,ans]; 

     cell.textLabel.text=answer; 
     return cell; 
    } 

    } 
    else if (todisplay==1){ 
    int ans=[self getRandomNumberBetween:10 to:50]; 
    answer=[NSString stringWithFormat:@"%d+%d=%d",firstNumber,lastNumber,ans]; 
    cell.textLabel.text=answer; 
    return cell; 
    } 

    return cell; 
} 

-(int)getRandomNumberBetween:(int)from to:(int)to { 
    return (int)from + arc4random() % (to-from+1); 
} 

Заметь, я объявил firstNumbers, lastNumbers в NSMutableArray в заголовке, а также предположил, что вы есть ссылка на ваш tableView, названный tv. Наконец, я предположил, что у вас есть только один раздел в вашей таблице. Надеюсь это поможет!

+0

Спасибо за ответ. Можете ли вы изменить код и показать его мне? Я даже попробовал это. Но это не работает для меня. Это ошибка – puneeth

+0

Добавил код. Это немного грязно, и я работаю с меньшей информацией, которую я могу здесь. Сделал несколько предположений. Надеюсь, поможет. –

+0

Большое спасибо за код. Я проверю его сейчас. – puneeth

Смежные вопросы

 Смежные вопросы