2012-05-25 5 views
0

Я новичок в программировании на iOS, и я пытаюсь заставить представление таблицы работать с моим приложением, но я не могу найти твердую информацию о том, почему приложение продолжает прерываться. вот код из файла делегата, может ли кто-нибудь сказать мне, что я делаю неправильно, что вызывает ошибку?Xcode: sigabrt error

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    listTopics = [NSMutableArray arrayWithCapacity:8]; 
    Topics *topic = [[Topics alloc]init]; 
    topic.topic = @"Movies"; 
    [listTopics addObject:topic]; 
    topic = [[Topics alloc]init]; 
    topic.topic = @"Games"; 
    [listTopics addObject:topic]; 
    topic = [[Topics alloc]init]; 
    topic.topic = @"TV"; 
    [listTopics addObject:topic]; 
    topic = [[Topics alloc]init]; 
    topic.topic = @"Cars"; 
    [listTopics addObject:topic]; 
    topic = [[Topics alloc]init]; 
    topic.topic = @"Actors"; 
    [listTopics addObject:topic]; 
    topic = [[Topics alloc]init]; 
    topic.topic = @"Sports"; 
    [listTopics addObject:topic]; 
    topic = [[Topics alloc]init]; 
    topic.topic = @"Brands"; 
    [listTopics addObject:topic]; 
    topic = [[Topics alloc]init]; 
    topic.topic = @"Music"; 
    [listTopics addObject:topic]; 
    topic = [[Topics alloc]init]; 

    UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;  
    TopicsViewController *topicsViewController = [[navigationController viewControllers]objectAtIndex:0]; 
    topicsViewController.listTopics = listTopics; 
    return YES; 
} 
+0

Прежде всего: где ваш TableView? Второе: что такое «listTopics»? Где объявлено? –

+0

listTopics находится в @implementation и TableView Я не совсем уверен, как работать. Я слежу за учебником на этом сайте: raywenderlich.com/5138/beginning-storyboards-in-ios-5-part-1 Если честно, я не нашел хороших, прямолинейных руководств или чего-то еще для новичков на развитие iOS, в отличие от android. Есть ли хорошие веб-сайты, где есть учебники, которые показывают основы и преподавают основы и работают оттуда? –

+0

Да, он компилируется только во время работы sigabrt –

ответ

1

Я предполагаю, что вы хотите, чтобы показать навигационный контроллер, который имеет контроллер представления таблицы в качестве контроллера зрения корня, который TopicsViewController для вас.

В вашем методе

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

вам необходимо установить RootViewController свойство окна. Вы не можете получить его, потому что вы еще не сделали этого. После этого вы должны сделать его видимым. Следующий код должен помочь вам

TopicsViewController *topicsViewController = [[TopicsViewController alloc] init]; 
// or 
TopicsViewController *topicsViewController = [[TopicsViewController alloc]initWithStyle:UITableViewStylePlain]; 
// depends if it is a view controller or table view controller 

topicsViewController.listTopics = listTopics; 

UINavigationController *topicsNavController = [[UINavigationController alloc] initWithRootViewController:topicsViewController]; 
self.window.rootViewController = topicsNavController; 
[self.window makeKeyAndVisible]; 
return YES; 

Обратите внимание, что, если вы не используете ARC вам нужно освободить объекты, которые вы назвали Alloc на них.

+0

ooo, который получил ошибку при использовании первой версии ThreadViewController, которую вы мне показали, bu похоже, что список невидим, хотя у меня есть строка [self.window makeKeyAndVisible]; спасибо за помощь всем путем –

+0

о, я только что заметил, извините, контроллер должен быть табличным представлением, а не просто просматривать, поэтому мне придется использовать initWithStyle, но по какой-то причине, когда я помещаю это в него, не кажется быть готовым способом –

+0

Разве ваш класс ThemeViewController распространяется от UITableViewController или UIViewController? Если это UIViewController, тогда вы должны поместить свой стол в свое «я», иначе он уже установлен. – Mert

3

Чтобы помочь с отладкой, вы должны добавить «контрольную точку исключения». Перейдите к навигатору точки останова (один из вкладок на левой панели) и нажмите на маленькую кнопку + в левом нижнем углу. Выберите «Добавить точку останова исключения», затем нажмите «ОК».

Запустите приложение еще раз, и вы должны получить точку останова в строке вашей ошибки.

+0

спасибо, что сработал и показал мне, где ошибка происходит главным образом –

+2

@MakarEmelyanov: пожалуйста, убедитесь, что вы принимаете этот ответ, если это вам помогло - так что другие будут знать, что тема закрыта. –

+0

я буду, но У меня все еще есть еще одна проблема, не волнуйтесь :) –

1

Дикая догадка: ваш topicViewController равен нулю или не является ThreadViewController.

Возможно, у вас могут быть проблемы с памятью, так как вы не выпускаете объекты, которые вы создаете. (или вы используете ARC?). Вы также можете проверить, что вы уничтожаете объекты тем.

Пожалуйста, предоставьте нам еще один код, который поможет вам.

С уважением

+0

в любое время, когда я пытаюсь опубликовать данные, он дает мне ошибку, поэтому я предполагаю, что его причина у меня есть ARC на –

+0

Well , что будет зависеть от сообщения об ошибке. Если у вас есть ARC, вы должны иметь сообщение об ошибке: ARC запрещает явное сообщение «release» или релиз недоступен в режиме автоматического подсчета ссылок /. – CitronEvanescent

+0

только что проверил там, у меня определенно есть ARC на –