iOS 5 プロジェクトを iOS 6 環境に移動したばかりです (Apple が 4 インチ デバイスの互換性をサポートすることを必須にしたためUIViewController
) UINavigationController
。
カスタムをプッシュした後、そのカスタムを初めてUIViewController
プッシュするときにのみ、ユーザー インターフェイスが 5 ~ 20 秒間ブロックされます。UIViewController
ポップUIViewController
してもう一度押すと、遅延や UI ブロックはありません。
これが何が起こるかです。
最初に、UITableViewController の didSelectRowAtIndexPath から UIViewController をプッシュしています (カスタム init は正常に動作しますが、問題はありません)。
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
、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) もブロックされ、同様に応答しません。