Симулятор iphone загружает только черный экран

В настоящее время я пытаюсь создать приложение для управления линиями в виде списка представлений таблицы в Xcode5. Я пытаюсь передать изменчивый массив, который является свойством queue.h, для контроллера очереди, который также имеет свойство изменяемого массива. Основная причина этого в том, что позже я создам еще один nsmutablearray, объекты которого будут массивами очереди, т.е. это будет список списков членов. по какой-то причине (я искал Google и SO) приложения компилируются нормально, то есть без проблем, но когда я запускаю симулятор, он создает только черный экран.

Я относительно новичок в программировании, поэтому любая помощь приветствуется. Если есть дополнительная информация, которая вам нужна, пожалуйста, дайте мне знать.

Queue — это подкласс NSObject со свойством NSMutableArray, которое называется arrayQueue.

раскадровка - это только навигационный контроллер с прикрепленным к нему tableviewcontroller (QueueViewController).

это код из QueueViewController.m. В файле .h есть только свойство массива nsmutable с именем *queue;

@implementation QueueViewController
{
Queue *list;
}

- (void)viewDidLoad
{
[super viewDidLoad];

list = [[Queue alloc]init];

QueueMember *member = [[QueueMember alloc]init];
member.name = @"adam";
member.rank = 1;
member.eta = 5;
[list.arrayQueue addObject:member];

member = [[QueueMember alloc]init];
member.name = @"bob";
member.rank = 2;
member.eta = 10;
[list.arrayQueue addObject:member];

member = [[QueueMember alloc]init];
member.name = @"cason";
member.rank = 3;
member.eta = 15;
[list.arrayQueue addObject:member];

QueueViewController *queueViewController = [[QueueViewController alloc]init];
queueViewController.queue = list.arrayQueue;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"QueueCell"];

QueueMember *member = (self.queue)[indexPath.row];
cell.textLabel.text = member.name;
cell.detailTextLabel.text = [NSString stringWithFormat:@"%d min", member.eta];

return cell;
}

весь app delegate.m

#import "AppDelegate.h"

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{   
return YES;
}

- (void)applicationWillResignActive:(UIApplication *)application
{
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
// Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
}

- (void)applicationDidEnterBackground:(UIApplication *)application
{
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
}

- (void)applicationWillEnterForeground:(UIApplication *)application
{
// Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the  background.
}

- (void)applicationDidBecomeActive:(UIApplication *)application
{
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
}

- (void)applicationWillTerminate:(UIApplication *)application
{
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}

@end

person snapfish    schedule 16.02.2014    source источник
comment
stackoverflow.com /вопросы/6600257/ ?   -  person    schedule 16.02.2014
comment
Я ценю быстрый ответ. я немного смущен, так как я не думаю, что использую выход представления MainWindow.xib, поскольку это xcode5. Кроме того, я не уверен, где находится основной интерфейс в окне настроек целевого приложения? другие ответы вращают заставку, которая не имеет отношения к моей ситуации, так как это не проблема задержки запуска, а просто не запускается   -  person snapfish    schedule 16.02.2014
comment
Что вы сделали с этим QueueViewController? Покажите нам код этого контроллера просмотра   -  person Kumar KL    schedule 16.02.2014
comment
stackoverflow.com/ вопросы/14487024/   -  person Kumar KL    schedule 16.02.2014
comment
спасибо за ссылку, я разместил код выше, и мне было интересно, как мне установить контроллер корневого представления в моем случае? Я пытаюсь добавить следующий код, но не знаю, что указать в качестве параметра для initWithRootViewController? UINavigationController *navController = [[UINavigationController alloc]initWithRootViewController:rootView]; self.window.rootViewController = navController;   -  person snapfish    schedule 16.02.2014
comment
я использовал здесь rootView, который не объявлен и не работает. Спасибо за помощь.   -  person snapfish    schedule 16.02.2014


Ответы (1)


Вы не установили rootViewController из window.

ИЗМЕНИТЬ:

Вы можете создать массив в viewDidLoad. В viewDidLoad напишите:

list = [[Queue alloc]init];

QueueMember *member = [[QueueMember alloc]init];
member.name = @"adam";
member.rank = 1;
member.eta = 5;
[list.arrayQueue addObject:member];

member = [[QueueMember alloc]init];
member.name = @"bob";
member.rank = 2;
member.eta = 10;
[list.arrayQueue addObject:member];

member = [[QueueMember alloc]init];
member.name = @"cason";
member.rank = 3;
member.eta = 15;
[list.arrayQueue addObject:member];
person Rashad    schedule 16.02.2014
comment
я думал, что устанавливаю rootViewController в качестве навигационного контроллера в этом коде. также раскадровка имеет навигационный контроллер в качестве начального представления, которое до сих пор работало для меня в других приложениях. Вы имеете в виду, что я должен добавить что-то вроде этого поверх uinavigationcontroller *navigationcontroller?: - person snapfish; 16.02.2014
comment
UIViewController *viewController = [экземпляр раскадровкиViewControllerWithIdentifier: UINavigationController]; self.window.rootViewController = просмотрконтроллер - person snapfish; 16.02.2014
comment
я не уверен, как создать экземпляр, поскольку раскадровка не является фактическим классом/типом. - person snapfish; 16.02.2014
comment
я изменил конец кода на это, что приводит к сбою из-за того, что нулевой индекс выходит за пределы пустого массива. может кто-нибудь дать мне знать, если я в правильном направлении, по крайней мере? - person snapfish; 16.02.2014
comment
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] границ]]; // Точка переопределения для настройки после запуска приложения. UINavigationController *viewController = [[UINavigationController alloc] initWithNibName:@YourFirstViewController bundle:nil]; self.window.rootViewController = viewController; UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController; QueueViewController *queueViewController = [navigationController viewControllers][0]; queueViewController.queue = list.arrayQueue; - person snapfish; 16.02.2014
comment
Вы делаете это неправильно, подождите. Я собираюсь поделиться некоторым кодом для навигационного контроллера. - person Rashad; 16.02.2014
comment
Но сначала объясните, что вы собираетесь делать. - person Rashad; 16.02.2014
comment
я пытаюсь передать массив, который я установил в делегате, для контроллера очереди, чтобы он мог его загрузить. Я подумал, что должен сделать это, просматривая представления, начиная с rootview и заканчивая navcontroller и queueviewcontroller, поскольку раскадровке нужно, чтобы это было сделано в коде. Спасибо за то, что так помогли и были терпеливы. - person snapfish; 16.02.2014
comment
Смотрите мою правку. есть ли причина для создания очереди в AppDelegate? - person Rashad; 16.02.2014
comment
не в частности, я просто видел это в учебнике и думал, что это лучше. Начальный учебник от Apple (самый простой) делает это в viewdidload. основываясь на вашем редактировании, должен ли я сделать так, чтобы delegate.m завершил запуск с параметрами, вернув да, и удалил все остальное? - person snapfish; 16.02.2014
comment
Да. Это было бы хорошо. - person Rashad; 16.02.2014
comment
Я внес изменения, которые вы предложили, и я все еще застрял на черном экране. когда я создаю массив в viewdidload в queueviewcontroller, я сохраняю или удаляю [super viewdidLoad]? также с учетом этой новой настройки, где я могу установить очередь свойств (NSMutableArray) для queueviewcontroller как list.arrayQueue (массив, который мы создали в viewdidload? Дело в том, чтобы два массива были равны, чтобы когда я редактирую очередь классов и ее экземпляров это будет отражено обратно в модель и показано в queueviewcontroller. - person snapfish; 16.02.2014
comment
Оставьте [super viewdidLoad]. Вы можете установить массив в viewDidLoad. - person Rashad; 16.02.2014
comment
я редактирую код (см. вопрос еще раз), а черный экран все еще там. Любые другие предложения? я также предоставил дополнительную информацию о характере приложения в целом (список списков участников), если это поможет. Спасибо еще раз. - person snapfish; 16.02.2014
comment
Вы используете раскадровку? Можете ли вы опубликовать текущий appdelegate.m? - person Rashad; 16.02.2014
comment
да, я использую раскадровку, но у нее есть только навигационный контроллер с подключенным tableviewcontroller, использующим класс queueviewcontroller. я только что обновил весь код для делегата приложения.m в вопросе. - person snapfish; 16.02.2014
comment
Является ли QueueViewController корневым контроллером представления контроллера навигации? Я думаю, что вам не хватает этой части. Убедитесь, что контроллер навигации имеет корневой контроллер представления. Вы можете проверить это руководство: raywenderlich.com/5138/ начало-раскадровки-в-ios-5-part-1 - person Rashad; 16.02.2014
comment
да это так. существует отношение контроллера корневого представления к очереди в навигационном контроллере. я на самом деле прошел учебники по раскадровке от raywenderlich, прежде чем делать это приложение. Я использовал версию ios7 и нашел ее очень полезной. - person snapfish; 16.02.2014
comment
я переделал все с самого начала, но установил массив в viewDidLoad, а не в appdelegate, и это сработало. Спасибо за все. - person snapfish; 17.02.2014
comment
Добро пожаловать. Продолжайте кодить и помогать людям. :) - person Rashad; 17.02.2014