我有一个UIViewController,有三个容器视图链接同样嵌入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中 { [super viewDidLoad];
self.currentLB.text = self.containerLBValue;
}
更改prepareForSegue代码:
if ([segue.identifier isEqualToString:@"segue1"]) {
ContainerViewController *viewController = (ContainerViewController*)[segue destinationViewController];
viewController.containerLBValue = @"123";
}
答案 0 :(得分:0)
您无法在prepareForSegue中设置IBOutlet的文本,因为尚未加载视图,并且出口将为零。您需要在目标控制器中具有字符串属性,并将字符串传递给它。然后,目标控制器应使用传入的字符串在viewDidLoad中设置自己的标签。