gpt4 book ai didi

ios - 将 UITextField 文本传递给不同 View Controller 上的 UILabel

转载 作者:行者123 更新时间:2023-12-01 18:08:30 24 4
gpt4 key购买 nike

我正在尝试将 UITextField 的文本从 View Controller 1 传递到 View Controller 2 中的 UILabel。

我正在使用 segue 传递信息,但我在 Label 上没有得到任何信息。似乎文本字段中的文本变为 NULL在它被传递给 View Controller 2 时。

View Controller 1 (UITextField)

- (IBAction)sendtoVC2:(UIButton *)sender
{
[self performSegueWithIdentifier:@"toVC2" sender:self];
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"toVC2"])
{
ViewController2 *VC2 = (ViewController2 *)segue.destinationViewController;
VC2.label.text = self.textField.text;
}
}

View Controller 2.h (UILabel)
#import "ViewController1.h"

@interface ViewController2 : UIViewController
@property (strong, nonatomic) IBOutlet UILabel *label;
@end

谢谢你。

最佳答案

很可能是因为标签还不存在。创建 UIViewController 时,它的 View 在实际需要时才会加载。这称为“延迟加载”,这意味着只有在有人第一次需要它时才会创建一个值。

Lazy loading is a design pattern commonly used in computer programming to defer initialization of an object until the point at which it is needed. It can contribute to efficiency in the program's operation if properly and appropriately used.



您在第二个 View Controller 中的 UILabel 属性仅在加载第二个 View Controller 的 View 后才会获得一个值,这仅在有人显式调用其“ View ”属性时才会发生。因此,为了证明我的理论,只需再插入一行:
if ([segue.identifier isEqualToString:@"toVC2"])
{
ViewController2 *VC2 = (ViewController2 *)segue.destinationViewController;
UIView *unusedReferenceToViewToLoadTheView = VC2.view
VC2.label.text = self.textField.text;
}

关于ios - 将 UITextField 文本传递给不同 View Controller 上的 UILabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36389340/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com