gpt4 book ai didi

ios - 在 prepareForSegue 上为 Popover Segue : strange behavior in iOS 5 传递数据

转载 作者:行者123 更新时间:2023-11-29 11:02:50 24 4
gpt4 key购买 nike

我注意到在 iOS 5 中将数据传递给弹出窗口时出现一些奇怪的行为。在调用 prepareForSegue 之前调用 Popovers viewDidLoad 方法:

在 Storyboard 中,segue 将 FirstViewController 的按钮连接到 PopoverViewController,后者嵌入在导航 Controller 中。

为了测试,记录了两种方法:

/* FirstViewController.m */
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"showPopover"]) {
NSLog(@"FirstViewController: prepareForSegue");
UINavigationController *navigationController = segue.destinationViewController;
PopoverViewController *popoverVC = (PopoverViewController *)navigationController.topViewController;
popoverVC.myProperty = @"Data to be passed";
}
}

在另一个 ViewController 中:

/* PopoverViewController.m */
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"PopoverViewController: viewDidLoad");
}

在 iOS 6 下,行为符合预期:

2013-02-25 09:03:53.747 FirstViewController: prepareForSegue
2013-02-25 09:03:53.751 PopoverViewController: viewDidLoad

在 iOS 5 下,PopoverViewControllerviewDidLoadprepareForSegue 之前被调用:

2013-02-25 09:05:28.723 PopoverViewController: viewDidLoad
2013-02-25 09:05:28.726 FirstViewController: prepareForSegue

这很奇怪,很难将数据传递给可以在 viewDidLoad 中使用的 Popover。有什么解决办法吗?

最佳答案

我现在使用 viewWillAppear: 方法而不是 viewDidLoad 解决了这个问题。我认为无论如何这是配置 View 的更好方法(因为 View 可能已经加载并且应该在每次出现时配置 View )。

在 iOS 5 和 iOS 6 中,viewWillAppear: 方法在 prepareForSegue 之后加载。

但是,对于那些需要 viewDidLoad 的人来说,tkanzakic 建议的解决方案才是可行的。

关于ios - 在 prepareForSegue 上为 Popover Segue : strange behavior in iOS 5 传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15062657/

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