如何从另一个ViewController更改一个ViewController上的标签文本

时间:2016-03-29 08:08:54

标签: ios objective-c xcode uiview

在viewOne中,我有labelOne,labelOne有文本。我想在标签中使用labelTwo从labelOne获取它的文本(在viewOne中)。

我将如何实现这一目标?

更多信息 - 我有两个独立的视图控制器由UIPageViewController控制。

4 个答案:

答案 0 :(得分:1)

您可以为UILabel添加标签,然后使用

UILable *l = ((UILable*)view.viewWithTag)

从视图中获取标签

或迭代其子视图,检查是否找到UILabel

for (UIView *subview in view.subviews)
    {
        if ([subview isKindOfClass:[UILable class]) {
             UILable *l =  (UILable *)subview;
        }
    }

答案 1 :(得分:1)

  • 在故事板中选择第一个视图控制器,然后选择控制        从第一个视图拖动到第二个视图控制器

  • 从您看到的列表中选择推送。

  • 选择两个视图之间新添加的行    控制器。

  • 为其指定名称。(如“PushSegue”)

在第一个视图控制器中添加代码按钮单击。

[self performSegueWithIdentifier:@"PushSegue" sender:self];

然后为PrepareForSegue添加Delegate

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
   if ([[segue identifier] isEqualToString:@"ListMenuSegue"])
   {
    SecondViewController *SecondVC = [segue destinationViewController];
    userViewController.Lable_String=@"Text_to_send";  //You will Get error here for Lable_String ->"Property not found etc" Becuse 
   }  

在secondViewController.h中添加此代码

@property(strong,nonatomic)NSString *Lable_String;

然后在secondViewController.m中打印字符串值

- (void)viewDidLoad 
{
   [super viewDidLoad];
   NSLog(@"%@",Lable_String);
}

答案 2 :(得分:0)

你可以在viewTwo中创建label的属性。当你在viewOne中执行segue然后将labelOne文本分配给viewTwo的label属性。在viewTwo中,didLoad方法从属性标签获取文本并将这些文本提供给labelTwo of viewTwo

答案 3 :(得分:0)

您可以为每个标签指定标签,例如

labelOne.tag = 1001;

在viewTwo类中,您可以获得labelOne

UILabel *labelOne = (UILabel *)[self.superview viewWithTag:1001];

如果viewOne,viewTwo都添加到同一个视图/视图控制器上,这将有效。