无法将变量/值传递给另一个视图控制器(不工作)

时间:2013-12-01 13:07:49

标签: ios objective-c

对象:更改ViewControllerB中的标签文本

(在ViewControllerA.m中)

- (IBAction)ReturnToMenu
{
    ViewControllerB *ViewControllerB =
    [self.storyboard instantiateViewControllerWithIdentifier:@"ViewControllerB"];
    ViewControllerB.scorelabel.text=@"WHY IS IT NOT WORKING";
    [self presentViewController:GameOverViewController animated:YES completion:nil];
}

嗯,这不行。我已经筋疲力尽了。这是一个基本问题,但请帮助我。

P.S。 @“为什么它不起作用”只是一个临时的事情,来自ViewControllerA的一个变量应该取而代之。

P.P.S。我尝试了Passing Data between View Controllers,但它没有用。我不确定我在这里做错了什么

3 个答案:

答案 0 :(得分:0)

您不应该尝试直接操纵另一个视图控制器的视图。这是糟糕的设计,在许多情况下(和你的一样)它不起作用。

不是设置标签的文本,而是添加字符串属性“score”。在实例化VC之后设置它。

然后,在“ViewController8”的viewWillAppear方法中,将score属性安装到标签中。

问题解决了。

答案 1 :(得分:0)

这里我从主视图控制器中显示一个模态视图控制器,以显示我之前从foursquare api获得的位置。

    LocationPickerVC *vc = (LocationPickerVC*)[self.storyboard instantiateViewControllerWithIdentifier:@"modal"];
    if([vc respondsToSelector:@selector(setLocations:) ])
            vc.locations = items;
    [self.formSheetController presentViewController:vc animated:YES completion:nil];

[编辑]

确保在故事板中设置故事板ID(因为下面的代码是“模态”)。我的LocationPickerVC也有这个界面。

    @interface LocationPickerVC : UIViewController<UITableViewDataSource, UITableViewDelegate>
    @property(strong, nonatomic) NSMutableArray *locations;
    @end

答案 2 :(得分:-1)

好的,试试这个:

在声明属性ViewController1.h的{​​{1}}中,添加以下内容:

score

+ (ViewController1 *) sharedController;添加此方法:

ViewController1.m

现在,在其他ViewControllers中你需要来自+ (ViewController1 *)sharedController { static ViewController1* staticVar = nil; if (staticVar == nil) staticVar = [[ViewController1 alloc] init]; return staticVar; } 的东西,导入标题,然后得到如下属性:

ViewController1