2015-10-15 2 views
-1

Итак, я заранее извинюсь, но я полный ноб для разработки Swift и iOS, но я действительно хочу научиться кодировать. Я последовал за несколькими учебниками и т. Д. В Интернете, но не могу найти ответа на эту проблему, которую я испытываю. Это должно быть простое решение, потому что это не похоже на очень сложную проблему, но googles не являются моим другом в поиске ответа. Я не хочу использовать раскадровки, потому что хочу узнать настоящее мясо и картофель. Я использую OS X 10.11, Xcode 7, записывая приложение для iOS 9, универсальное.Загрузите несколько отдельных файлов Swift в основной контейнерный вид

Итак, я разработал приложение для календаря с совершенно уникальным дисплеем, пользовательским интерфейсом и функциональностью, чем другие календари, основанные на сетке. У меня есть UIView, что я хочу быть контейнером для хранения других видов, которые мне нужны, и вытащить их в виде контейнера. У меня есть файлы ViewController.swift и мои пользовательские файлы ContainerView.swift HeaderView.swift, CalView.swift и CalDetailView.swift. Я устанавливал классы для каждого файла, HeaderView - это базовый UIView, CalView - это горизонтальный UIScrollView, который позволяет разбивать страницы на разные виды календаря, такие как неделя, месяц, день, год и т. Д. CalDetailView также представляет собой горизонтальный UIScrollView, который будет отображать информацию о событиях пользователю, а также быть основной областью действия для пользователя для редактирования, добавления событий и т. Д.

В настоящее время ContainerView загружается просто отлично, и я могу делать все, что захочу там и могут создавать эти другие подзапросы без проблем, но только в файле ContainerView. Я хочу, чтобы эти области были разделены на разные файлы для моего здравомыслия и добавили их в ContainerView UIView как subViews с AutoLayout и все, так же, как я могу делать внутри файла ContainerView, но это было бы огромным, и я не хочу что.

Я считаю, что правильный способ сделать это - добавить эти подвид под метод viewDidLoad() основного VC и создать мои ограничения AutoLayout в VC-файле, тогда я просто хочу загрузить мои подвид в файле ContainerView и постройте экран. Отдельные файлы subView будут содержать весь мой код чертежа и события касания и т. Д. Для представлений.

Вот простой каркас того, что я пытаюсь выполнить ... Все окно ContainerView.swift остальное, subViews ContainerView.

WireFrame

ответ

0

Этот вопрос немного открытого состава и неспецифической, но давайте игнорировать это сейчас (это ваш первый раз), в будущем, пожалуйста, более конкретно, это своего рода ответ учебник может лучше обеспечить. У вас будет достаточно сделать, не избегая Раскадровки - не стесняйтесь использовать их.

В любом случае это нормально.

Учитывая подкласс UIView MyView, в главном контроллере представления:

override func viewDidLoad() { 
    super.viewDidLoad() 
    .... 
    let myView = MyView() 
    self.view.addSubView(myView) 
    myView.frame = ... OR <SET CONSTRAINTS> 
    .... 
} 

По сути вы инициализируетесь теми просматривать подклассы и добавлять их по мере необходимости.

+0

Благодарим вас за то, что вы идете легко на noobie, я действительно ценю это. Я старался быть настолько конкретным, насколько мог. К сожалению, это не сработало. Я добавил предложенный код, но получил ошибку в строке self.addSubView, которая читает «Значение типа ViewController не имеет члена с именем addSubview». Я просмотрел его в документах Apple и его только член UIView. Я попробовал добавить его туда, без кубиков. Я не получил ошибку, и она построена отлично, но представление не отображается. –

+0

Спасибо. Я больше не получаю ошибку, и она строит отлично, но вид не отображается. Я вырыл документацию Apple, пытаясь найти решение, почему она не видна, и подумала, что она не была правильно нарисована. Поэтому я добавил метод bringSubviewToFront(), без кубиков.Затем я понял, что он не был инициализирован должным образом, поэтому я последовал инициативе Apple по инициализации представления, и он все еще не отображается. Когда я вынимаю код чертежа и помещаю его в VC, никаких проблем. Также, когда я помещаю его в файл ContainerView, он также отображается. Кажется, он не знает, что он есть, но ошибок нет. –

+0

Хорошо, понял. Я не делал своих границ в файле VC так же, как и в файлах представлений. Я переместил свои ограничения на файл VC, сохранил код рисования в отдельных файлах просмотра и отлично работает. Теперь, выясняя причуды Auto Layout ... забавные вещи. Спасибо Митчелл, я очень ценю вашу помощь. –

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