【问题标题】:iOS - Can't set the container view content using prepareforsegueiOS - 无法使用 prepareforsegue 设置容器视图内容
【发布时间】:2015-03-30 05:43:57
【问题描述】:

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

然后是 "segue1","segue2","segue3" 的 segue 标识符。

我在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 -(void)viewDidLoad { [超级viewDidLoad];

     self.currentLB.text = self.containerLBValue;
 }

更改 prepareForSegue 代码:

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

【问题讨论】:

  • 你的 prepareForSegue 代码是否被调用过?我遇到了使用“embed segue”时未调用 prepareForSegue 的问题
  • 是的,进入这个uiviewcontroller就会调用。

标签: ios uicontainerview


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2018-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多