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

时间:2015-03-30 05:43:57

标签: ios uicontainerview

我有一个UIViewController,有三个容器视图链接同样嵌入UIViewController(ContainerViewController)。

enter image description here

然后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中      {          [super viewDidLoad];

     self.currentLB.text = self.containerLBValue;
 }

更改prepareForSegue代码:

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

1 个答案:

答案 0 :(得分:0)

您无法在prepareForSegue中设置IBOutlet的文本,因为尚未加载视图,并且出口将为零。您需要在目标控制器中具有字符串属性,并将字符串传递给它。然后,目标控制器应使用传入的字符串在viewDidLoad中设置自己的标签。