gpt4 book ai didi

iOS - 为什么我不能以相同的方式使用 pushViewController 两次?

转载 作者:搜寻专家 更新时间:2023-10-30 20:18:19 25 4
gpt4 key购买 nike

我目前有三个 View Controller :ViewController1 ViewController2ViewController3。我试图在 ViewController1ViewController2 之间以及 ViewController2ViewController3 之间传递数据。

例如,要将 user 持有的数据从 ViewController1 传递到 ViewController2,我使用:

ViewController2 *vc2 = [[ViewController2 alloc]init];
vc2.user = _user;

[self.navigationController pushViewController:vc2 animated:YES];

但是如果我尝试从 ViewController2ViewController3 传递 user,我就不能使用上面的方法...我只是得到黑色 View Controller 出现在屏幕上。

相反,我尝试了这个并且它有效:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
ViewController3 *vc3 = [storyboard instantiateViewControllerWithIdentifier:@"vc3Storyboard"];

vc3.user = _user;

[self.navigationController pushViewController:vc3 animated:YES];

为什么我不能使用与 vc1 -> vc2 相同的方法?

ViewController3 *vc3 = [[ViewController3 alloc]init];
vc3.user = _user;

[self.navigationController pushViewController:vc3 animated:YES];

最佳答案

黑屏的原因是您用来实例化它的方法。

 ViewController2 *vc2 = [[ViewController2 alloc]init];

这成功地创建了一个 View Controller ,但是,唉,它没有 View (你没有给它一个)。导航 Controller 会将无 View View Controller 添加到其堆栈中,从而使前一个 Controller 动画化。由于导航 Controller 的默认背景颜色是黑色,而顶 View Controller 不存在,那么您遇到的正是应该出现的情况:什么都没有。

第二种方法之所以有效,是因为 Storyboard正在实例化 View Controller ,但这次它有一个实际 View :

ViewController3 *vc3 = [storyboard instantiateViewControllerWithIdentifier:@"vc3Storyboard"];

关于iOS - 为什么我不能以相同的方式使用 pushViewController 两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20865410/

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