我剛剛搬進了我的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