使用segue在View Controllers之间传递数据。不工作

时间:2015-03-21 04:50:33

标签: ios objective-c xcode uiviewcontroller uistoryboardsegue

我试图使用Segue从一个视图控制器传递一个Integer值到另一个视图控制器。我用这个帖子来帮助我: Passing Data between View Controllers

所以我按照顶部问题中的步骤,在接收信息标题的视图控制器中声明了我的整数,并同样将该标头导入到发送信息标题的视图控制器中。 我创建了一个模态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上找不到属性得分。 所以在begin.h(begin是目标VC)中我创建了一个得分属性:

  @property(strong,nonatomic) NSInteger score;

一旦我这样做,我就会收到这个错误:程序中意外的'@'。 我拿出'@'并得到另一个错误:缺少参数分数。

3 个答案:

答案 0 :(得分:0)

请尝试关注code

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

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

答案 1 :(得分: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指出来,在 destinationViewController 中将得分声明为NSInteger属性

@property(strong,nonatomic)NSInteger score;

答案 2 :(得分: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;
       }
    }
}