将数据从 MyScene 传递到 ViewController?

Passing data from MyScene to ViewController?

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

我正在尝试通过 #importing "MyScene.h" 并声明 MyScene *_myScene 并执行 int topScore = _myScene.topScore; [= 使最高得分出现在我的 ViewController class 中16=]

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

在这个问题中你问了两个问题

  1. 您将 MyScene 的对象放入 ViewController class。这里没有传递整数:

    归零解决方法:你可能忘记初始化ViewController里面的MyScene对象,会导致这样一个错误。

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

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

@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

ViewController.m 的实现中 ViewDidAppear 你必须设置视图的 (UILabel, UITextField) 属性 使用 name 的 值,如下所示:

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

我的建议是 ViewDidAppear 因为每次视图出现在屏幕上时它都会调用,如果有 ViewController嵌入在选项卡栏 (UITabBarController) 中 viewDidLoad 不会每次都调用。否则可以使用 ViewDIdLoad 方法代替 Tab-bar 大小写。