2015-06-13 1 views
0

В моем проекте у меня есть два контроллера представления, и у меня возникают проблемы с подключением к контроллеру вида объектов, таких как UIImageView. Когда я пытаюсь создать IBOutlet, он говорит мне, что «Не удалось вставить новую коллекцию выпусков: не удалось найти какую-либо информацию для класса с именем UIViewController». Я считаю, что эта проблема связана с тем, что мое первоначальное заявление моего класса выглядит следующим образом:Подключение объектов с двумя контроллерами View в Swift

class UIViewController: UIViewController { 

когда на самом деле контроллер представления называется mainScene вместо. Однако, когда я изменяю первый UIViewController к тому, что я думаю, что это должно быть (mainScene), он даже не показывает мне возможность подключения IBOutlet ...

class mainScene: UIViewController { 

Итак, у меня есть два вопроса.

  1. Нужно ли мне иметь отдельный отдельный класс для второго UIViewController и это решит мои проблемы?

  2. Есть ли лучший способ связать объекты с UIViewController или я просто делаю что-то ужасно неправильно (вероятный сценарий)?

спасибо

ответ

0

Короткий ответ: 1. Да, да. 2. Нет лучшего способа, и вы не делаете что-то ужасно неправильно. (Вероятно, вы просто пропустили шаг.)

У вас есть два контроллера вида. Предполагая, что они разные, вы должны подклассифицировать каждый из UIViewController с другим именем. Например, mainSceneViewController и otherSceneViewController.

Ваш mainSceneViewController и otherSceneViewController будут иметь свои собственные свойства и IBOutlets.

Если вы, вероятно, застряли, вам нужно изменить класс вашего контроллера viewController в Interface Builder, чтобы он соответствовал имени класса в его файле .swift, поэтому IB знает, какие выходы он может подключить для этого контроллера представления.

Каждая сцена вашей раскадровки соответствует контроллеру вида. Когда выполняется segue, iOS запускает ваш контроллер просмотра из раскадровки.

Хотя возможно иметь только один подкласс контроллера представления и использовать один и тот же подкласс для разных видов, это происходит не слишком часто.

Update:

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

В вашем комментарии UIViewController является классом, а mainSceneViewController подклассифицирован от UIViewController. Для вашего второго контроллера просмотра это, вероятно, будет class otherSceneViewController: UIViewController {, так как ваша другая сцена, скорее всего, потребует разных свойств и методов с вашего основного контроллера сцены.

Вы можете read more about Inheritance в руководстве по быстрому программированию.

+0

Как именно я буду подклассифицировать это, как вы упомянули? Должен ли я использовать два разных варианта.быстрых файлов, а затем запускать каждый из них с помощью класса mainSceneViewController: UIVIewController { – jbcd13

+0

Да, у вас будет два разных файла .swift, каждый из которых имеет другое имя сцены. Например, GameOverViewController.swift начнется с 'class GameOverViewController: UIViewController {'. –

+0

Большое вам спасибо за помощь – jbcd13

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