2013-07-02 3 views
0

Недавно я попытался зайти в разработку приложений для iOS, и я хотел сделать приложение для фонариков, поэтому я пошел по следующему учебнику. Однако учебник делает приложение без использования раскадровки. Когда я попытался сделать то же самое в раскадровке, я не смог. Поэтому я подумал, что если бы я просто скопировал логику из классов header/delegate, тогда функциональность должна быть перенесена! Но когда я попытался запустить версию раскадровки, программа останавливается/падает и показывает мне основной класс с небольшим пузырьком, говорящим: «Thread 1: SIGABRT»Разве раскадровка изменяет функциональность кода в xcode?

Есть ли причина, по которой проект с раскадрой изменяет основную логику ? Не кажется, что никакого смысла

+0

Самое большое изменение, возможно, то, что вы видите, это то, что без раскадровки XCode использует .xib-файл для каждого вида в вашем приложении. Однако при использовании раскадровки все эти .xib-файлы заменяются одним файлом .storyboard, который содержит информацию о макете для всех ваших просмотров. –

+0

Ваша проблема, скорее всего, не в том, что код был изменен раскадными версиями, но вы используете код, который работает с файлами xib без файлов xib. Копирование и вставка выполняется только при копировании и вставке всего. Если вы хотите использовать учебник для раскадровки, вам нужно понять код, чтобы вы могли внести необходимые изменения. –

ответ

0

Из ссылки UIViewController класса Apple:

Если ваше приложение использует раскадровку, чтобы определить контроллер представления и его связанных точки зрения, ваше приложение никогда не инициализирует объекты этого класса непосредственно. Вместо этого диспетчеры представлений либо создаются с помощью раскадровки либо автоматически с помощью iOS, когда запускается segue, либо программно, когда ваше приложение вызывает метод создания экземпляра раскадровки метод instantiateViewControllerWithIdentifier :. При создании экземпляра диспетчера представлений из раскадровки iOS инициализирует контроллер нового вида , вызывая его метод initWithCoder:. iOS автоматически устанавливает свойство nibName в файл nib, хранящийся внутри раскадровки.

+0

Чтобы прояснить этот ответ, общая проблема при переключении на раскадровки заключается в том, что не может быть очевидно, что раскадровка только вызывает «initWithCoder:». Если вы используете другой инициализатор, вам может потребоваться переместить код. –

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