理解uiviewcontrollers传递数据和更改视图的麻烦

时间:2016-05-18 17:43:47

标签: objective-c uitableview uiviewcontroller

我在传递一些数据时遇到了一些麻烦 (静态int)在视图之间,我很确定它,因为我没有正确地改变视图,但不确定我做错了什么。 (并且以前没有使用过故事板,对这些东西很新)

例如,从主菜单导航我加载 TableViewController_LevelViewTable:UITableViewController

TableViewController_LevelViewTable 显示游戏的所有级别,当我点击一个cel时,它应该在数据类中设置静态int值(相对于级别来说)之后由HelloSKScene读取的load和一个字符串 然后将helloSkscene加载到myViewControllerToSKScene

if (indexPath.row ==1)
{
    UIStoryboard *storyboard=[UIStoryboard storyboardWithName:@"Main" bundle:nil];
    //Load view controller: myViewController <loads SKScene>
    myViewControllerToSKScene *tvc=[storyboard instantiateViewControllerWithIdentifier:@"myViewControllerToSKScene"];
    [self.view addSubview:tvc.view];
    [self addChildViewController:tvc];

    [Data setLevel:1];
}

CLicking on Cel 1

这反过来加载myViewControllerToSKScene:UIViewController

myViewControllerToSKScene 
- (void)viewDidLoad
{
    // Create and configure the SKScene to load.
    HelloSKScene *theScene = [HelloSKScene sceneWithSize:spriteView.bounds.size];
    theScene.scaleMode = SKSceneScaleModeAspectFill;

    // Present the scene.
    [spriteView presentScene:theScene];
}

视图正在加载,但数据最初没有,但会第二次加载。我是从SKScene回到菜单然后返回skscene 不知何故静态int在视图之间不起作用

另外我注意到tableview仍然位于HelloSkScene视图后面(如何删除tableview,只保留屏幕上的SKScene,所有场景都应删除前一个场景)

谢谢 Ñ

enter image description here

在整个故事板下面,我正在测试嵌入tableviews,加载tableview控制器并将SKScene加载到UIView中 Basic storyboard layout of project

1 个答案:

答案 0 :(得分:1)

您正在做的是向当前控制器添加子视图,您可能希望使用-presentViewController:animated:completion:,如下所示:

UIStoryboard *storyboard=[UIStoryboard storyboardWithName:@"Main" bundle:nil];

myViewControllerToSKScene *tvc = [storyboard instantiateViewControllerWithIdentifier:@"myViewControllerToSKScene"];

//perhaps you want to add your level configuration here
tvc.level = indexPath.row //or just tvc.level = 1;

[self presentViewController:myViewControllerToSKScene animated:YES completition:nil];

有关here

中的更多信息

您在创建视图后设置了Data对象,这是第一次没有加载的原因,但是如果之前的解决方案没有“ ; t为你工作,你仍然想使用Data对象,你可以实现这样的东西:

UIStoryboard *storyboard=[UIStoryboard storyboardWithName:@"Main" bundle:nil];

myViewControllerToSKScene *tvc = [storyboard instantiateViewControllerWithIdentifier:@"myViewControllerToSKScene"];

[Data setLevel:1];

[self presentViewController:myViewControllerToSKScene animated:YES completition:nil];