将数据从MyScene传递到ViewController?

时间:2015-01-20 05:42:49

标签: objective-c xcode

在我的MyScene.h中,我有@property (nonatomic) int topScore;
在MyScene.m中,我有self.topScore = 10;

我试图通过#importing "MyScene.h"在我的ViewController类中显示topScore,并声明MyScene *_myScene并执行int topScore = _myScene.topScore;

我一直得到0.如何正确地将整数值或任何值从一个类传递到另一个类?

1 个答案:

答案 0 :(得分:1)

在这个问题中,您提出了两个问题

  1. 您在 ViewController 类中放置了 MyScene 的对象。这里没有传递整数:

    获得零的解决方案:您可能忘记在ViewController中初始化 MyScene 对象,这可能会导致此类错误。

  2. 要将值(对象/非对象)类型传递给另一个viewController,您应该在 ViewController.h 中声明数据传递类型的属性。

  3. - 如果传递数据是对象类型,那么您可以将其设置为如下属性:

    @interface ViewControlle : UIViewController
    @property (nonatomic) NSString *name;
    @end
    

    然后当您想将此值传递给 viewController 时,只需从外部设置属性,如下所示:

    ViewController *VcObj = [[ViewController alloc]init];
    VcObj.name = @"My Name is Anthony";
    //whatever the way you wanna show the view - push in the navigationController or show Modally o
    

    ViewDidAppear 中实现 ViewController.m 时,必须使用名称价值如下:

    -(void) ViewDidAppear{
    [super ViewDidAppear];
    self.myLabel.text = name; //here assumed that you have a UILabel declared as myLabel
    }
    

    我的建议是 ViewDidAppear ,因为每次视图出现在屏幕上时都会调用,如果任何 ViewController 嵌入在标签栏(UITabBarController)中< strong> viewDidLoad 不会每次都调用。否则,可以使用 ViewDIdLoad 方法代替Tab-bar。