2015-03-21 6 views
-1

Я попытался передать значение Integer, используя Segue от одного контроллера представления к другому. Я использовал эту тему, чтобы помочь мне: Passing Data between View Controllers.Передача данных между контроллерами View с использованием segues. Не работает

Итак, я выполнил шаги из верхнего вопроса, объявив свое целое число в контроллере представления, который получает заголовок info, и также импортировал этот заголовок в контроллер представления, который отправляет заголовок info. Я создал modal segue, который, хотя я бы и создал значение целого числа и представил второй контроллер представления. Он представляет только второй контроллер просмотра. Кроме того, когда я закрываю приложение, он замораживает весь мой телефон!

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
    if([segue.identifier isEqualToString:@"useCheat"]){ 
     begin *controller = (begin *)segue.destinationViewController; 
// I get a warning report here that says, "unused variable 'controller'". I could not figure out a fix. 
     if (codeForAllActive == YES) { 
      score = 10; 
     } 
     else if (codeForOneActive == YES) { 
      score = 9999975; 
     } 
    } 
} 

Как вы можете видеть, useCheat является идентификатором segue. begin - это контроллер просмотра, получающий информацию. (информация - это значение балла). Значение балла не изменяется в начале.

Если я вместо этого:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
      if([segue.identifier isEqualToString:@"useCheat"]){ 
       begin *controller = (begin *)segue.destinationViewController; 
       if (codeForAllActive == YES) { 
        controller.score = 10; 
       } 
       else if (codeForOneActive == YES) { 
        controller.score = 9999975; 
       } 
      } 
     } 

Я получаю сообщение об ошибке при controller.score, что гласит: недвижимость оценка не найден на тип объекта начинаются. Таким образом, в begin.h (начало этого VC назначения) создать свойство для очков:

@property(strong,nonatomic) NSInteger score; 

После того, как я делаю это, я получаю эту ошибку: неожиданную «@» в программе. Я вынул «@», и я получил еще одну ошибку: отсутствующий параметр.

+0

Попробуйте 'controller.score', вы не используете объект' controller'. Это мост для передачи данных из текущего представления в режим назначения. –

+0

не работает, появляется ошибка: ожидается a ';' – jose

+0

Что такое 'begin'? –

ответ

0

Попробуйте как следующий code

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 

    SecondViewController * secondVC = (SecondViewController *) segue.destinationViewController; 
    secondVC.intVariable = 10; 
} 
0

Попробуйте это:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
    if([segue.identifier isEqualToString:@"useCheat"]){ 
     begin *controller = (begin *)segue.destinationViewController; 
// I get a warning report here that says, "unused variable 'controller'". I could not figure out a fix. 
     if (codeForAllActive) { 
      controller.score = 10; 
     } else if (codeForOneActive) { 
      controller.score = 9999975; 
     } 
    } 
} 

@rdelmar Указал его, объявить счет как NSInteger собственности в destinationViewController

@property(strong,nonatomic)NSInteger score; 
+0

вызывает ошибку: «свойство« оценка »не найдено по типу объекта 'begin *' – jose

+1

@jose, вам нужно создать свойство, называемое счетом в контроллере, для получения информация – rdelmar

+0

вы можете объяснить? – jose

0

Проверьте это :

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
    if([segue.identifier isEqualToString:@"useCheat"]){ 
    begin *controller = (begin *)segue.destinationViewController; 

     if (codeForAllActive == YES) { 
     controller.score = 10; 
     } 
     else if (codeForOneActive == YES) { 
     controller.score = 9999975; 
     } 
    } 
} 
Смежные вопросы