Я столкнулся некоторые вопросы WRT XCode 6.1.1, вот мой кодself.window setRootViewController не работает на Xcode 6.1.1
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[[DBManager getSharedInstance] initWithdbFile];
[[DBManager getSharedInstance] createtableScripts];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
containerViewController =[[CprViewController alloc] init];
[containerViewController Setup];
[self.window setRootViewController:containerViewController.containerViewController];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
[self pickModel];
return YES;
}
Теперь приложение работает отлично в старых XCode т.е. 5.1.1, но пока имитируя XCode 6.1.1, приложение запускает образ запуска, и нет ответа, т. е. выполнение заканчивается на [self.window setRootViewController: containerViewController.containerViewController]; и он не продолжает выполнять дальнейшие строки кода. Он не показывает ошибок в консоли. . (Приложение однако работает на устройстве, имеющем последней ОС (т.е. IOS 8) Пожалуйста, помогите
* Edited Post. - здесь начинается
Спасибо за помощь Вот проблема, что я столкнулся, Это. в моем AppDelegate файле
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[[DBManager getSharedInstance] initWithdbFile];
[[DBManager getSharedInstance] createtableScripts];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; //Now Removed!!!
containerViewController =[[CprViewController alloc] init];
[containerViewController Setup];
self.window.rootViewController = containerViewController.containerViewController;
self.window.backgroundColor = [UIColor whiteColor];//Now Removed!!!
[self.window makeKeyAndVisible];//Now Removed!!!
[self pickModel];
return YES;
}
Теперь я переставляю три линии так же, как вы предложили, и теперь продолжается выполнение
Теперь это мой код [Setup] containerViewController;
-(void)Setup
{
SideMenuViewController *leftMenuViewController = [SideMenuViewController homeBookViewController];
CprStartPageViewController *accounts=[[CprStartPageViewController alloc] initWithNibName:@"CprStartPageViewController" bundle:nil];
self.navController= [[CprNavigationViewController alloc]
initWithRootViewController:accounts];
self.containerViewController = [MFSideMenuContainerViewController containerWithCenterViewController:self.navController leftMenuViewController:leftMenuViewController
rightMenuViewController:nil];
[leftMenuViewController.passBookTable selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:YES scrollPosition:0];
}
Приведенный выше код прикрепляет боковое меню (здесь я прикрепляю меню слева) - Ошибка в этом коде, и выполнение продолжается. Теперь CprLoginViewController мой parentViewController т.е. parentViewController на 4 экрана, что я упомянул, и это мой initWithNibName для 4 экранов
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil parentViewController:(CprLoginViewController*) inVC
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil parentViewController:inVC];
if (self) {
// Custom initialization
}
return self;
}
и ошибка в настоящее время происходит в CprLoginViewController, где я использую процедуру, которая называется showNextPage к перемещаться между этими 4 страниц
-(void) showNextPage
{
if (currentPage > numberPages)
return;
CprLoginSubViewController *controller;
switch(currentPage)
{
case 0:
controller = [[Corppersondtl alloc] initWithNibName:@"Corppersondtl" bundle:nil parentViewController:self];
break;
case 1:
controller = [[CprLoginSub1ViewController alloc] initWithNibName:@"CprLoginSub1ViewController" bundle:nil parentViewController:self];
break;
case 2:
controller = [[CprLoginSub2ViewController alloc] initWithNibName:@"CprLoginSub2ViewController" bundle:nil parentViewController:self];
break;
case 3:
controller = [[CprLoginSub3ViewController alloc] initWithNibName:@"CprLoginSub3ViewController" bundle:nil parentViewController:self];
break;
case 4:
controller = [[CprLoginSub4ViewController alloc] initWithNibName:@"CprLoginSub4ViewController" bundle:nil parentViewController:self];
default:
break;
}
CGRect rBounds;
// add the required controller's view to scroll view
if (controller.view.superview == nil)
{
CGRect frame = self.scrollView.frame;
frame.origin.x = CGRectGetWidth(frame) * (currentPage);
frame.origin.y = 0;
controller.view.frame = frame;
[self addChildViewController:controller];
[self.scrollView addSubview:controller.view];
[controller didMoveToParentViewController:self];
// just scroll to appropriate page
rBounds = self.scrollView.bounds;
rBounds.origin.x = CGRectGetWidth(rBounds) * currentPage;
[self.scrollView scrollRectToVisible:rBounds animated:YES];
}
NSLog(@"scrollView is %lf", self.scrollView.frame.origin.y);
viewOriginalbounds = rBounds; //self.scrollView.frame;
currentPage++;
}
в приведенном выше коде я прилагаю Scrollview для прокрутки экрана вверх, когда появляется клавиатура для текстовых входов. Теперь строка if (controller.view.superview == nil) выбрасывает ошибку exc_bad_access.
Любое объяснение? –
@MatthiasBauch нет необходимости создавать окно, система уже обрабатывает это сам – Azat
@ Азат спасибо, сэр, что сработало, но теперь я столкнулся с другой проблемой, далее добавляю прокрутку (извинения за неправильное форматирование кода) if (controller.view.superview == nil) теперь это вызывает ошибку EXC_BAD_ACCESS. контроллер - UIViewController, и я загружаю свои контроллеры view в переменную контроллера (у меня есть 4 экрана, для которых требуется просмотр прокрутки) – GMAN