我刚刚搬进了我的iOS 5的项目到iOS 6的环境(因为苹果做出强制要求支持4英寸设备保持兼容),现在我有一个位,而有问题的将UIViewController
推至UINavigationController
。UI块,而在推视图控制器导航控制器
当我按自定义UIViewController
后,我的用户界面阻止了5到20秒,只有当我第一次推送定制UIViewController
时。如果我弹出我的UIViewController
并再次推送,则没有延迟或UI块。
这里是什么情况;
首先我从UITableViewController中的didSelectRowAtIndexPath方法推我的UIViewController(自定义的初始化工作正常,没有任何问题上都存在)
CampaignDetailViewController *detailViewController = [[CampaignDetailViewController alloc] initWithProduct:selectedProduct];
[self.navigationController pushViewController:detailViewController animated:YES];
比我记录一切(我清除了所有的代码在viewDidLoad
,viewWillAppear
和viewDidAppear
,这意味着推控制器只应加载笔尖)
在推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
和取出笔尖文件,什么都没有改变。 - 没有被加载在pushViewController和加载的UIViewController之间。
- 此问题发生在我的iPhone 4 - iOS 5设备上。一切工作正常iOS 5和6模拟器也适用于我的iPhone 5 - iOS 6设备。
- 我对我的项目的其他部分推其他视图控制器为好,但这个UIViewController中似乎是唯一的问题。
- 视图控制器被推主线程上,因此视图控制器被加载在主线程
- 上在此阻塞期间,的XCode(4.6.1)也被阻断并且不作出响应,以及
将您的iphone升级到ios 6版本,或者在您的项目设置中设置ios 5兼容性 – Nagasaki 2013-05-03 09:50:15
,而不是self中的'super'= [super initWithNibName:@“CampaignDetailViewController”bundle:nil];为什么不使用'self'就像[self initWithNibName:@“CampaignDetailViewController”bundle:nil]; – 2013-05-03 09:50:32
@Nagasaki部署目标设置为iOS 5.0。还有什么要设置的吗? – Bartu 2013-05-03 09:53:14