【发布时间】: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