방금 Apple에서 iOS 6 환경으로 iOS 5 프로젝트를 옮겼습니다 (Apple에서 4 인치 장치의 컴플라이언스를 지원해야하므로). 지금은 약간의 문제가 있습니다. UIViewController
을 켜면 UINavigationController
이됩니다.보기 컨트롤러를 내비게이션 컨트롤러로 밀어 넣는 중 UI 블록
UIViewController
사용자 지정을 푸시 한 후 사용자 인터페이스가 처음으로 UIViewController
으로 푸시 될 때만 사용자 인터페이스가 5 ~ 20 초 동안 차단됩니다. 내 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
를 사용하려고하고 nib 파일을 삭제 한
- 추가 정보는 아무것도 변경되지 않습니다.
- 아무 것도 pushViewController와 UIViewController 사이에로드되지 않습니다.
- 이 문제는 iPhone 4 - iOS 5 장치에서 발생합니다. iOS 5 및 6 시뮬레이터에서 작동하는 모든 것이 iPhone 5에서 원활하게 작동합니다 - iOS 6 장치.
- 내 프로젝트의 다른 부분에서도 다른보기 컨트롤러를 밀고 있지만이 UIViewController 유일한 문제인 것 같습니다.
- 뷰 컨트롤러는 메인 쓰레드에 밀려, 따라서 제어기는,이 차단 기간 동안 메인 쓰레드
- 에 엑스 코드 (4.6.1)로드 볼도 차단 얻고뿐만
아이폰을 iOS 6 버전으로 업그레이드하거나, 프로젝트 설정에서 iOS 5 호환성을 self = [super initWithNibName : @ "CampaignDetailViewController"번들 : nil]의 'super'대신에 – Nagasaki
으로 설정하십시오. 왜 'self'를 [self initWithNibName : @ "CampaignDetailViewController"bundle : nil]처럼 사용하지 않는가? –
@Nagasaki 배포 대상이 iOS 5.0으로 설정되었습니다. 설정해야 할 것이 있습니까? – Bartu