gpt4 book ai didi

iphone - 将 View Controller 推送到导航 Controller 时 UI 阻塞

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:48:24 28 4
gpt4 key购买 nike

我刚刚将我的 iOS 5 项目移至 iOS 6 环境(因为 Apple 强制支持 4 英寸设备兼容性),现在我在推送 UIViewController 时遇到了一些问题转到 UINavigationController

在我推送我的自定义 UIViewController 之后,我的用户界面会阻塞 5 到 20 秒,只有当我第一次推送该自定义 UIViewController 时。如果我弹出我的 UIViewController 并再次按下它,则不会出现延迟或 UI 阻塞。

这是发生了什么;

首先,我从 UITableViewController 的 didSelectRowAtIndexPath 推送我的 UIViewController(自定义初始化工作正常,没有问题)

CampaignDetailViewController *detailViewController = [[CampaignDetailViewController alloc] initWithProduct:selectedProduct];
[self.navigationController pushViewController:detailViewController animated:YES];

然后我记录了所有内容(我清除了 viewDidLoadviewWillAppearviewDidAppear 中的所有代码,这意味着推送 Controller 应该只加载 nib )

在推送的UIViewController上;

- (id)initWithProduct:(Product *)selectedProduct
{
NSLog(@"starting init");
self = [super initWithNibName:@"CampaignDetailViewController" bundle:nil];
NSLog(@"nib loaded");
if (self) {
self.navigationItem.title = selectedProduct.name;
self.product = selectedProduct;
}
NSLog(@"finishing init");
return self;
}

- (void)viewDidLoad
{
NSLog(@"starting viewdidload");
[super viewDidLoad];
NSLog(@"finishing viewdidload");
}

- (void)viewWillAppear:(BOOL)animated
{
NSLog(@"view will appear");
}

- (void)viewDidAppear:(BOOL)animated
{
NSLog(@"view did appear");
}

调试器日志;

2013-05-03 12:33:49.678 my-app[1429:707] starting init
2013-05-03 12:33:49.680 my-app[1429:707] nib loaded
2013-05-03 12:33:49.683 my-app[1429:707] finishing init
2013-05-03 12:33:49.808 my-app[1429:707] starting viewdidload
2013-05-03 12:33:49.855 my-app[1429:707] finishing viewdidload
2013-05-03 12:33:49.861 my-app[1429:707] view will appear
2013-05-03 12:35:28.501 my-app[1429:707] view did appear

viewWillAppear 和 viewDidAppear 之间有超过 30 秒的延迟。

更多信息

  • 我已尝试使用常规 init 并删除了 nib 文件,但没有任何变化。
  • 在 pushViewController 和加载 UIViewController 之间没有加载任何内容。
  • 此问题发生在我的 iPhone 4 - iOS 5 设备上。在 iOS 5 和 6 模拟器上一切正常,在我的 iPhone 5 - iOS 6 设备上也正常。
  • 我也在项目的其他部分插入其他 View Controller ,但这个 UIViewController 似乎是唯一的问题。
  • View Controller 被推送到主线程,因此 View Controller 被加载到主线程
  • 在此阻塞期间,XCode (4.6.1) 也被阻塞并且没有响应

最佳答案

两个提示:

1 - 这个问题是发生在模拟器上还是真实设备上?我在模拟器上经历过很多意想不到的延迟。

2 - 记得打电话

[super viewWillAppear:animated];

[super viewDidAppear:animated];

在实现中。

来自 Apple 文档:

If you override this method, you must call super at some point in your implementation.

关于iphone - 将 View Controller 推送到导航 Controller 时 UI 阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16356001/

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