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



在viewOne中,我有labelOne,labelOne有文本。我想要viewTwo中的labelTwo从viewOne中的labelOne获取它的文本。

我该如何实现这一点?

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

您可以向UILabel添加标签,并使用

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

从视图中获取标签

或者在其子视图中迭代检查是否找到UILabel

for (UIView *subview in view.subviews)
    {
        if ([subview isKindOfClass:[UILable class]) {
             UILable *l =  (UILable *)subview;
        }
    }
  • 在情节提要中,首先选择视图控制器,然后选择控件从第一个视图拖动到第二个视图控制器

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

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

  • 指定名称。(如"PushSegue")

点击按钮,在您的第一视图控制器中添加代码

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

然后添加PrepareForSegue 的代表

- (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);
}

您可以在viewTwo中创建label的属性。当您在viewOne中执行segue时,将labelOne文本分配给viewTwo的label属性。在viewTwodidLoad方法中,从属性label中获取文本,并将这些文本交给viewTwolabelTwo。

您可以像一样为每个标签添加标签

labelOne.tag = 1001;

在viewTwo类中,您可以获得labelOne

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

如果在同一视图/视图控制器上同时添加viewOne和viewTwo,则此操作将有效。

相关内容