gpt4 book ai didi

objective-c - 使用 segue 在 Storyboard中的 View Controller 之间传递数据

转载 作者:行者123 更新时间:2023-11-28 20:30:40 28 4
gpt4 key购买 nike

我是 iOS 开发的新手,在阅读了很多关于传递变量的教程之后,我仍然需要你的帮助。

我的PP.m文件中的这个函数:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {


if ([segue.identifier isEqualToString:@"Btn1Transport"])
{
[segue.destinationViewController setMyData:(50)];
NSLog(@"Transporter1");
}

if ([segue.identifier isEqualToString:@"Btn2Transport"])
{
[segue.destinationViewController setMyData:(100)];
NSLog(@"Transporter2");
}

这是在我的 Category.m 文件中:

- (void)viewDidLoad{

[super viewDidLoad];

recipeLabel.text = @"Hello"; //for test, is working

-(void)setMyData:(int)myData
{

NSLog(@"Happines %d",myData);
NSString* result = [NSString stringWithFormat:@"%d", myData];
recipeLabel.text = result; //not working
}

问题出在行 NSLog(@"Happines %d",myData);我的数据打印得很好,但没有设置为 recipeLabel。所以为了测试它是否有效,我制作了 recipeLabel.text = @"Hello";而且标签很好。我究竟做错了什么?很抱歉初学者的问题。

最佳答案

不,您不能直接从 prepareForSegue 事件写入 TextLabel,当加载目标 View Controller 时,该值将被覆盖...

您必须在目标 View Controller 中设置一个变量,然后您必须将标签的值设置为等于目标 View Controller 的 viewDidLoad 事件中的变量值才能使其工作......

//The variable myIntVar is a private variable that should be declared in the header file as private 
- (void)viewDidLoad{

[super viewDidLoad];

recipeLabel.text = myIntVar; //set the value equal to the variable defined in the prepareForSeque
}

-(void)setMyData:(int)myData
{

NSLog(@"Happines %d",myData);
NSString* result = [NSString stringWithFormat:@"%d", myData];
myIntVar = result;
}

关于objective-c - 使用 segue 在 Storyboard中的 View Controller 之间传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12234599/

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