2012-06-03 2 views
2

Проблема заключается в том, что мне нужен способ в основном удалить все данные ввода, которые пользователь помещает в мои массивы, если выполняется условие. Я новичок в программировании Objective-C и iOS, но я полагал, что решение может вызвать вызов метода viewDidLoad, поэтому он фактически обновит приложения со значениями сброса массива по умолчанию. Если есть какой-либо другой логический способ сделать это, я был бы признателен за помощь.Как перезагрузить tableView i.e вызовите метод viewDidLoad, если выполнено условие

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

Это та часть, где мне нужно ее обновить.

if ([gradeRecieved objectAtIndex:i]==nil) { 


      break; // if this condition is met the program must begin anew. 

Edit * Мне нужно напомнить, The - (Недействительными) Метод viewDidLoad

здесь больше кода.

-(IBAction)button:(id)sender{ 
    double sum = 0; 
    int i = 0; 
    double gradeEarned=0; 
    double creditHours = 3; 

    while (i<8){ 

     // [credits removeObjectIdenticalTo:[NSNull null]]; 
     if ([credits count ] ==0) { 
      break; 
     } 

      if ([credits objectAtIndex:i] == radioButtonA) { 

      // [gradeRecieved replaceObjectAtIndex:i withObject:GradeA]; 
       [defArray addObject:GradeA]; 
       gradeEarned+=GradeA.intValue; 
       i++; 
       continue; 
      } 

      if ([credits objectAtIndex:i] == radioButtonB) { 
      // [gradeRecieved replaceObjectAtIndex:i withObject:GradeB]; 
       [defArray addObject:GradeB]; 
       gradeEarned+=GradeB.intValue; 
       i++; 
       continue; 
      } 

      if ([credits objectAtIndex:i]== radioButtonC){ 
     // [gradeRecieved replaceObjectAtIndex:i withObject:GradeC]; 
       [defArray addObject:GradeC]; 
       gradeEarned+=GradeC.intValue; 
       i++; 
       continue; 

      } 
     if ([credits objectAtIndex: i] == defaulter) { 

      UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Custom button pressed" message:[NSString stringWithFormat:@"You pressed the custom button C"] delegate:self cancelButtonTitle:@"great"otherButtonTitles:nil]; 
      [alert show]; 
      [alert release]; 
     [self viewDidLoad]; 
      break; 
     } 
    } 

    if ([defArray count]>0) { 

       sum= ([defArray count])/(creditHours*gradeEarned); 
     NSLog(@"%f",sum);} 

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

+0

Вы можете проверить мою идею ниже о встраивании вашего массива в Tableview. – pasawaya

+0

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

+0

'-objectAtIndex:' не может возвращать нуль, если вы говорите о NSArray. Не уверен, в чем вопрос. –

ответ

2

Если вы хотите, чтобы вызвать этот код еще раз, обернуть этот код в метод и вызовите этот метод в viewDidLoad и где хотите. Вот несколько примеров кода:

- (void)viewDidLoad { 

    if ([gradeRecieved objectAtIndex:i]==nil) { 


      [self refreshArray]; 
} 

} 

- (void)refreshArray { 

    // refresh here 


} 

Затем вызовите [self refreshArray] везде, где вам нужно!

Я вижу, что вы новичок! Если бы этот ответ был правильным, вы можете голосовать или галочкой!

+0

Я полагаю, что OP спрашивает, как перезагрузить данные массива, а не данные таблицы, но ваш комментарий интересен, так как теперь я понимаю, что OP может поместить свои данные в виде таблицы, которые не видны, и использовать вашу функцию для перезагрузки его данные. – pasawaya

+1

Thats на самом деле отличная идея .... – MCKapur

+0

Вы были вдохновением! +1 вам @Rohan – pasawaya

1

Метод viewDidLoad загружается только один раз - при первом просмотре представления. Чтобы перезагрузить данные, самым простым способом является создание другого метода и вызов этого метода каждый раз, когда вам нужно загружать данные.

Пример,

-(void)loadingData{ 

//code to load the data 

} 

-(void)viewDidLoad{ 
//this will call the loadingData method to load the data 
[self loadingData]; 

}