对象:更改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,但它没有用。我不确定我在这里做错了什么
答案 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