приложение ios падает - PullRequest
0 голосов
/ 14 декабря 2010

У меня проблема с падением моего приложения.Основной корневой контроллер - это контроллер вкладок.внутри контроллера вкладок у меня есть 4 кнопки, к которым подключены навигационные контроллеры.внутри контроллера nav у меня есть настольный контроллер с несколькими ячейками.когда вы щелкаете ячейку, вы переходите к контроллеру представления.теперь, когда я нажимаю на ячейку, и это берет меня к контроллеру представления.когда я нажимаю стрелку назад на контроллере навигации, он возвращает меня к представлению таблицы, что замечательно, но когда я нажимаю на новую ячейку, приложение вылетает.каждый раз, когда я щелкаю ячейку, возвращаюсь и щелкаю другую ячейку, приложение вылетает.Что я делаю неправильно?Я думаю, что я тоже забочусь обо всех моих релизах.хотя не уверен.

Theres ошибка, которую я получаю, когда я запускаю программу.Он читает:

Book Nav Controller (Medical How to's) имеет свойство «Имя NIB», установленное в «BookTableViewController.nib», но этот контроллер представления не предназначен для установки своего представления таким образом..

Я также получаю, что setText устарел для этого кода:

cell.text = [breakdownArray objectAtIndex:row];

На что я могу его поменять?

Также мой код didSelectRowAtIndexPath:

NSInteger row = [indexPath row];
if (self.bookDetailViewController == nil); {
    BookDetailViewController *aBookDetail = [[BookDetailViewController alloc] initWithNibName:@"BookDetailView" bundle:nil];
    self.bookDetailViewController = aBookDetail;

    [aBookDetail release];

}

bookDetailViewController.title = [NSString stringWithFormat:@"%Breakdown" , [breakdownArray objectAtIndex:row]];

Surviving2012AppDelegate *delegate = [[UIApplication sharedApplication] delegate];
[delegate.breakdownNavController pushViewController:bookDetailViewController animated:YES];

[delegate release];

}

Ответы [ 4 ]

0 голосов
/ 15 декабря 2010

определенно не вызывайте release для делегата. Вы вызываете release только для объекта, когда используете метод, который содержит: alloc / init, copy, new или retain. в противном случае вы, скорее всего, выпустите автоматически выпущенный экземпляр, что приведет к его аварийному завершению.

исправьте это, если это все еще произойдет, опубликуйте ваши результаты, и у нас будет другой взгляд.

0 голосов
/ 14 декабря 2010

Что касается вашего устаревшего метода:

измените его на:

cell.textlabe.text = [breakdownArray objectAtIndex:row];

И я не понимаю этого:

 Surviving2012AppDelegate *delegate = [[UIApplication sharedApplication] delegate];
[delegate.breakdownNavController pushViewController:bookDetailViewController animated:YES];

[delegate release];

Вы сказали, что выесть навигационный контроллер в каждой вкладке?Тогда почему ты не используешь это?

[self.navigationController pushViewController:bookDetailViewController


animated:YES];
0 голосов
/ 14 декабря 2010

Справочная библиотека Apple для iOS - доступна прямо в XCode под Справкой-> Документация для разработчиков - очень четко определяет, что заменить устаревшее свойство .text: .textLabel и .detailTextLabel .

0 голосов
/ 14 декабря 2010
cell.text = [breakdownArray objectAtIndex:row];

Должно быть:

cell.textLabel.text = [breakdownArray objectAtIndex:row];

bookDetailViewController.title = [NSString stringWithFormat:@"%Breakdown" , [breakdownArray objectAtIndex:row]];

Должно быть:

bookDetailViewController.title = [NSString stringWithFormat:@"%@", [breakdownArray objectAtIndex:row]];

Если вы вызываете это из одного из viewControllers в tabBarController, то это:

Surviving2012AppDelegate *delegate = [[UIApplication sharedApplication] delegate];
[delegate.breakdownNavController pushViewController:bookDetailViewController animated:YES];
[delegate release];

Должно быть:

[self.navigationController pushViewController:bookDetailViewController animated:YES];

И если после этого все еще происходит сбой, вам нужно опубликовать, как вы определяете:

bookDetailViewController в вашем файле .h и содержимое ваших методов viewWillAppear и viewDidLoad.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...