![]() |
|
|
![]()
|
|
| Dimanoss |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 14.10.2010 Репутация: нет Всего: нет |
Попытался воткнуть в проект ViewController. Нужно было сделать его первым (в нём загрузка переменных и прочие глобальные нужности происходят), переписал файлы AppDelegate. Сам контроллер работает, но отказывается загружать следующий (который до того был дефолтным и вполне себе прекрасно работал). Выдаёт сообщение "Warning: Attempt to present <старый_VC: 0x7160b40> on <новый_VC: 0x715f250> whose view is not in the window hierarchy!".
Что за нелепость? |
|||
|
||||
| Maksys |
|
|||
|
Future Splasher ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1289 Регистрация: 15.6.2005 Где: Екатеринбург Репутация: нет Всего: 17 |
Написано же по русски: "Не могу показать <старый_VC: 0x7160b40> в <новый_VC: 0x715f250> так как его вью не присутствует в иерархии окон"
попробуйте вот это:
|
|||
|
||||
| Bitter |
|
|||
![]() Опытный лентяй ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1209 Регистрация: 15.8.2004 Где: Харьков, Ukraine Репутация: 10 Всего: 27 |
Если б еще понять как вы все это делаете. А то пока вообще ничего не ясно
Добавлено через 3 минуты и 55 секунд глупости, нужно починить иерархию а не вставлять костыли |
|||
|
||||
| Dimanoss |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 14.10.2010 Репутация: нет Всего: нет |
Дык, написано-то оно написано, но ведь до того присутствовал. Я тоже за починку иерархии. Но вот как это устроить?
|
|||
|
||||
| Bitter |
|
|||
![]() Опытный лентяй ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1209 Регистрация: 15.8.2004 Где: Харьков, Ukraine Репутация: 10 Всего: 27 |
Чтоб это устроить нужно сначала понять что вы там делаете
|
|||
|
||||
| Dimanoss |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 14.10.2010 Репутация: нет Всего: нет |
просто меняю контроллер.
всё затыкается на последней строчке... |
|||
|
||||
| Bitter |
|
|||
![]() Опытный лентяй ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1209 Регистрация: 15.8.2004 Где: Харьков, Ukraine Репутация: 10 Всего: 27 |
Приведенный код рабочий, так что все должно работать. Если не работает - значит не там смотрите
|
|||
|
||||
| Dimanoss |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 14.10.2010 Репутация: нет Всего: нет |
в том-то и фокус. С другими контроллерами это работало. А тут всё встряло...
Добавлено через 7 минут и 5 секунд О! Если я тот же самый код вешаю на кнопку, то всё работает! А в viewDidLoad не работает!.... |
|||
|
||||
| Dimanoss |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 14.10.2010 Репутация: нет Всего: нет |
по тому же вопросу. При вызове из ViewDidLoad вылетает ошибка, при вызове из функции обработки нажатия кнопки всё океюшки. Такая думка - не успевает вызываемый контроллер "прописаться". Если это так, то как-то можно задержку выполнения организовать (дождаться полной загрузки). Либо так: может, зря я это в ViewDidLoad вызываю, может есть другая функция, которая запустится по полной загрузке контроллера?
|
|||
|
||||
| Bitter |
|
|||
![]() Опытный лентяй ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1209 Регистрация: 15.8.2004 Где: Харьков, Ukraine Репутация: 10 Всего: 27 |
да, методов предостаточно. Есть методы viewWillAppear и viewDidAppear, вызываются перед отображением вью и после этого. Но учтите что они будут вызываться каждый раз перед и после отображения вьюхи.
Можно сделать такой фокус - во вьюДидЛоад написать
Это позволит вызвать ваш контроллер спустя 0 секунд, но за то после того как контроллер полностью загрузится |
|||
|
||||
| Dimanoss |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 14.10.2010 Репутация: нет Всего: нет |
YYYEEEAAHH! Спасибище огроменное! Работает!
Добавлено через 4 минуты и 52 секунды В логи, правда выдаёт "Unbalanced calls to begin/end appearance transitions for <ViewController>", но мне пока это даже неинтересно. Главное - работает. |
|||
|
||||
| Maksys |
|
|||
|
Future Splasher ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1289 Регистрация: 15.6.2005 Где: Екатеринбург Репутация: нет Всего: 17 |
Может лучше заюзать viewWillAppear, а там поставить флаг типа isAppear и проверять его
Ну это мое нубское решение таких вопросов. Пока не изучал глубже как правильней выйти из этой ситуации. |
|||
|
||||
| Bitter |
|
|||
![]() Опытный лентяй ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1209 Регистрация: 15.8.2004 Где: Харьков, Ukraine Репутация: 10 Всего: 27 |
Эта ошибка означает что началась анимация перехода ViewController до того как закончилась анимация предыдущего контроллера. Попробуйте перенести этот код в viewWillAppear. только диспатч уберите
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | iOS | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |