iOS - 无法使用 prepareforsegue 设置容器视图内容

iOS - Can't set the container view content using prepareforsegue

我有一个 UIViewController ,有三个容器视图 link 相同的嵌入 UIViewController(ContainerViewController).

然后segue标识符为"segue1","segue2","segue3".

我在 prepareForSegue 中设置了值,但是容器视图中的 UILabel(currentLB) 没有改变。

我把代码设置在UIViewController.m

 -(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
 {
     NSLog(@"segue.identifier:%@",segue.identifier);
     if ([segue.identifier isEqualToString:@"segue1"]) {
          ContainerViewController *viewController = (ContainerViewController*)[segue destinationViewController];
         viewController.currentLB.text = @"123";
     }
     if ([segue.identifier isEqualToString:@"segue2"]) {
         ContainerViewController *viewController = (ContainerViewController*)[segue destinationViewController];
         viewController.currentLB.text = @"234";
     }
     if ([segue.identifier isEqualToString:@"segue3"]) {
         ContainerViewController *viewController = (ContainerViewController*)[segue destinationViewController];
         viewController.currentLB.text = @"345";
     }

 }

有谁知道为什么吗?

我知道还有其他方法可以使用

((ContainerViewController*)self.childViewControllers[1]).currentLB.text = @"2222";

可以设置容器值。

但我现在想使用 prepareforsegue 设置值。

有谁知道哪里错了吗?

非常感谢。

----答案----

在UIViewContainer.h中设置NSString 属性.

 @property (nonatomic,strong) NSString *containerLBValue;

在UIViewContainer.m -(无效)viewDidLoad { [超级viewDidLoad];

     self.currentLB.text = self.containerLBValue;
 }

更改 prepareForSegue 代码:

  if ([segue.identifier isEqualToString:@"segue1"]) {
     ContainerViewController *viewController =      (ContainerViewController*)[segue destinationViewController];
    viewController.containerLBValue = @"123";
     }

不能在prepareForSegue中设置IBOutlet的文本,因为视图还没有加载,outlets将为nil。您需要在目标控制器中有一个字符串 属性,并将该字符串传递给它。然后目标控制器应该使用传入的字符串在 viewDidLoad 中设置自己的标签。