2013-07-03 5 views
0

УДЛИНЕННЫЙ С ПЕРВОЙ ПРЕДЛОЖЕНИЕМ НИЖЕ, ЕЩЕ ПРОИЗВОДСТВЕННЫЙ ВЫПУСК: Я унаследовал некоторые приложения от iPhone от разработчика, и теперь я разработчик с очень небольшим количеством навыков. Я пытаюсь преобразовать одно из этих приложений для iPhone в универсальное (iPhone & iPad), и я почти там, только одна проблема: у меня есть представление, которое правильно исчезает на iPhone, но не на iPad. Надеясь, что кто-то здесь может мне помочь, я боролся с этим вопросом (который, надеюсь, имеет довольно простое решение) в течение 3 дней, и я думаю, что вытащил все мои волосы. :)Просмотр не исчезнет с iPad, но отлично работает на iPhone.

Мне сказали, что это старый код, и это может быть правдой, но поскольку эта проблема блокирует меня от отправки в магазин приложений, я бы предпочел избежать больших решений по рефакторингу/редизайну для Теперь. Итак, вот что происходит (извинения заранее для фанков форматирования на этом посту, не знает, почему код не все идет в формате кодирование, фанк нумерация пули, и т.д.):

  1. App начинается с моим основными (MyAppViewController), в котором есть кнопка «Воспроизвести», которая запускает игровой процесс. При нажатии кнопки «Play сливают, следующий код инициализирует контроллер представления геймплей:

    mainGameViewControllerIpad = [[MainGameViewControllerIpad Alloc] initWithNibName: ноль пачки: ноль]; [self.view addSubview: mainGameViewControllerIpad.view];

Это открывает вид MainGameViewControllerIpad, и пользователь играет в игру.

  1. После игры круглый е nds, код в MainGameViewControllerIpad делает это:

    GameStatsViewControllerIpad * gameStatsViewControllerIpad = [[GameStatsViewControllerIpad alloc] init]; [gameStatsViewControllerIpad setModalTransitionStyle: UIModalTransitionStyleCrossDissolve]; [self presentModalViewController: gameStatsViewControllerIpad animated: YES];

    [self.view addSubview: gameStatsViewControllerIpad.view];

    [gameStatsViewControllerIpad setStatsDisplay];

Это открывает окно «Статистика игры», в котором говорится о том, как они играли в раунде, который они только что сыграли. Таким образом, у вас есть представление в режиме ожидания, а затем контроллер представления игрового процесса в качестве подзадачи этого, а экран статистики - как подзаголовок представления игрового процесса. Это отлично работает как на iPhone, так и на iPad.

Так вот где все становится странно:

  1. Когда пользователь сделал просмотр их статистику, они нажмите кнопку «Готово» на странице статистики, и следующий код работает:

[self rejectViewControllerAnimated: YES завершение: nil]; [self.view release];

ТАК ЗДЕСЬ ВОПРОС: на iPhone это закрывает представление статистики, и я предполагаю, что, поскольку представление статистики является подчиненным объектом MainGameViewController, это представление также исчезает, и пользователь возвращается в MyAppViewController , ЭТО ВЕРНО.

Однако, на iPad, когда вышеприведенный код работает, он закрывает представление непосредственной статистики, но как только оно исчезло, оно показывает, что вид MainGameViewController все еще отображается - другими словами, на iPhone код выше закрывает представление subview и его контейнер, но на iPad он не закрывает родительский/супер-просмотр.

У кого-нибудь есть довольно простые предложения о том, как заставить MainGameViewController работать и на iPad? Заранее благодарим за любые идеи и предложения!

ответ

0

Просто уберите модальный вид, а не удалите его.

[self dismissViewControllerAnimated:YES completion:nil]; 
+0

Спасибо за ответ, DCGod! Просто я понимаю, вы имеете в виду, что я должен заменить: [self.view removeFromSuperview]; При этом: [self rejectViewControllerAnimated: YES завершение: nil]; Это предложение? Я попробовал это, и когда я нажал кнопку «Готово» на странице статистики, экран приложения поменялся белым, почти так же, как если бы на экране вообще не было просмотраКонтроллеры. Кажется, что два супервизора, которые содержат текущее представление, также отклоняются. Это то, что эта команда сделает, удалить все viewControllers? – AppHopper

+0

Немного подробнее. Поэтому я добавил команду, которую вы предложили, и мой код теперь выглядит так: [self rejectViewControllerAnimated: YES завершение: nil]; //[self.view removeFromSuperview]; [self.view release]; Результат: когда я нажимаю кнопку «done» один раз, ничего не происходит. Дважды, еще ничего. Затем, при третьем щелчке, текущее представление статистики растворяется, и экран приложения становится полностью белым, как если бы каждый контроллер вида в приложении был уволен. Любые мысли? Благодаря! – AppHopper

+0

Что касается этих трех кликов: это почти так, как если бы на первом клике был снижен контроллер нижнего уровня, затем второй клик, средний, а затем при последнем нажатии кнопки верхний контроллер просмотра отклоняется , и как только он исчезнет, ​​диспетчер просмотра отсутствует на дисплее. Может ли это быть на самом деле? Очень странно! Есть предположения? Спасибо! – AppHopper

Смежные вопросы