По иронии судьбы выдвигая контроллеры пустого вида - PullRequest
0 голосов
/ 15 сентября 2011

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

Я прочитал несколько тем, похожих на те, что я спрашиваю, но методы были совершенно другими. Пока ни один код не работал.

В основном (я говорю это, потому что мой код включает в себя прекрасный змееподобный спуск в сложный беспорядок, но соответствующие фрагменты будут выставлены по запросу), моя проблема в том, что я звоню

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

, и он выталкивает мой viewcontroller в симулятор, и NSLogs ищет строку, которая мне нужна, прекрасно изменилась, но это выдвигает пустой вид! Код для этого запуска делает константу контроллера представления постоянной:

UIViewController *viewController = [[xSheetMusicViewController alloc]initWithNibName:nil bundle:nil];

Так я подумал про себя, что я делаю !? Поэтому я вернулся к старому методу, который включал в себя создание UIViewcontroller в операторе if-then, if-else-then, который будет выдвигать различные представления в зависимости от того, были ли выбраны определенные строки (стандартные вещи). Который выдвинул новый вид с моей загруженной строкой отлично, но это только NSLog'ed одна строка снова и снова! И хуже всего было то, что мое приложение вызывало бы либо SIGABRT, либо EXC_BAD_ACCESS, когда я пытался вернуться к контроллеру rootview. (вот соответствующий код):

UIViewController *viewController = [[[UIViewController alloc]init]autorelease];
if (indexPath.row == 0 && indexPath.section == 0) {
    appDelegate.baseURL = @"mussette.pdf";
viewcontroller = [[xSheetmusicViewController alloc]initwithnibname:nil bundle:nil];
}
else if (...)
//pushview, changestring, blah blah//

Теперь, я бы предпочел, чтобы мой просмотр выдвигал PDF, как он должен, и имел правильное строковое значение (и не давал мне SIGABRT или EXC_BAD_ACESS, но это дано), но, похоже, компромисс только из моего достичь. Я знаю, что, возможно, я совершаю глупость, которую можно решить одной строкой кода, но сейчас это кажется безнадежным.

Заранее спасибо.

РЕДАКТИРОВАТЬ: Чтобы ответить на все ваши вопросы, да, нет XIB, а скорее (ID) инициализации Метод в следующем представлении.

РЕДАКТИРОВАТЬ 2: ответить на запрос lostInTransit и добавить некоторые дополнительные сведения:

<else if (indexPath.row == 1 && indexPath.section == 0) {
    appDelegate.baseURL = @"Importing PDF's.pdf";

Кроме того, если это помогает, выходные данные продолжают регистрироваться: Приложение попыталось выдвинуть ноль контроллера вида на цель.

Когда я пытаюсь выдвинуть представление из ячейки табличного просмотра, и это было сделано раньше, когда он загружал PDF правильно, поэтому я проигнорировал его.

Ответы [ 2 ]

2 голосов
/ 15 сентября 2011

Вопрос: почему вы сначала инициализируете свой viewController как UIViewController, а затем снова как xSheetmusicViewController? Я думаю, что проблема заключается в правильном выпуске значений. В одном init вы делаете авто-релиз, в другом - нет. Таким образом, есть вероятность, что вы дважды отпускаете переменную, ведущую к ПЛОХОМ ДОСТУПУ.

Вы не против опубликовать "бла-бла" :) в последнем фрагменте кода?

0 голосов
/ 15 сентября 2011

Есть ли у вас файл с именем xSheetmusicViewController.xib в вашем приложении?Он будет загружен вашим контроллером представления в качестве его владельца после вызова [[xSheetmusicViewController alloc] initNithNibName:nil bundle:nil]; (фактически он будет загружен при первом обращении к свойству представления).Если этот файл не существует, то для загрузки его представления будет вызван метод -loadView: контроллера представления.

Если у вас пустое представление, у вас либо пустое, либо неверно названное перо (возможно, выпереименовал класс, но не перо?) или вы не создаете правильное представление в -loadView:.

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