从另一个ViewController中的按钮更改一个ViewController中的标签

时间:2014-05-13 00:12:42

标签: ios objective-c viewcontroller

我是Obj-c的新手,而且我一直试图解决这个问题,而且我找到了一些帖子,但我无法让解决方案发挥作用。我不知道自己做错了什么。

所以这里是设置。我有一个带有按钮的viewcontroller。触摸时,该按钮应该更新另一个视图控制器中的标签。

这是我迄今为止所做的。

VC1: 我在VC1的标题中设置了属性:

MainScene *msc;

我在单击按钮时调用实现文件中的方法:

-(void) button {
        [msc updateLabel];
}

VC2: 这是方法updateLabel。

-(void)updateLabel {
    label.string = [NSString stringWithFormat:@"%.2LF", points];
}

我在标题中也有方法:

-(void)updateLabel;

不确定我在这里做错了什么。

2 个答案:

答案 0 :(得分:0)

这不是它的工作方式。

VC1开始,您首先要创建ViewController VC2的实例。

在你出现它之前,在VC2属性上设置字符串值。

答案 1 :(得分:0)

你刚刚在名为msc的VC1中定义了一个属性,但你没有将它分配给VC2的任何实例,所以当你尝试调用方法updateLabel时没有任何反应。 在你的情况下,我假设VC2是父视图控制器,VC2存在VC1。所以你需要在VC1中设置一个协议和一个委托来更新vc2的标签。

在VC1头文件中添加这些:

@protocol VC1Delegate <NSObject>
-(void)updateLabel;
@end
@property (weak, nonatomic) id<VC1Delegate> delegate;

并在呈现VC1时设置VC1的委托= VC2

如果VC1是父视图控制器,事情会更容易,只需在将实例值设置为msc后使用[msc updateLabel];