2015-01-06 2 views
3

У меня есть группа взаимодействующих элементов управления в прототипе ячейки. Я обнаружил, что хотел бы повторно использовать ту же самую группу сотрудничества за пределами таблицы, в другом контроллере представления.Могу ли я использовать представление контейнера в прототипе UITableViewCell

Итак, я сделал новый UIViewController в своем раскадровке, переместил все элементы управления и переместил поведение взаимодействия с моего подкласса UITableViewCell на новый. Теперь мне просто нужно поместить контейнерный вид в ячейку прототипа в раскадровку и подключить встроенный сегмент. Достаточно легко.

Что я не знаю, как это сделать, где будет создан новый контроллер подзадачи (мой новый подкласс) и как я могу ссылаться на него из кода подкласса ячейки? Мне нужно передать некоторую информацию из свойств ячейки до встроенного контроллера представления. Я могу создать выход для представления контейнера в моей ячейке, но это для представления, а не для встроенного контроллера представления.

+0

Рассмотрите возможность использования подкласса 'UIView' вместо подкласса' UIViewController' в этом случае. Вообще говоря, 'UIViewController' используется, когда существует много разных элементов, которые могут или не могут быть связаны в одном и том же визуальном пространстве. «UIView» более подходит для использования для «множества элементов пользовательского интерфейса, которые появятся несколько раз». –

+0

Интересно, что я действительно рассмотрел подклассу uiview и задался вопросом, будет ли это проще. Но даже если я это сделаю, мне все равно интересно, если можно разумно встроить контроллер представления в прототип uitableviewcell. –

+0

Я бы не подозревал. Даже если у вас был доступ к контроллеру представления при создании ячейки, чтобы добавить его в качестве контроллера дочернего представления вашего контейнера, вам также необходимо иметь к нему доступ, когда ячейка будет выпущена обратно в пул доступных для повторного использования, чтобы вы могли удалить контроллер вида из своего контейнера. –

ответ

7

Когда вы встраиваете контроллер вида в другой контроллер представления, вызывается метод prepareForSegue: вида viewController контейнера - здесь вы можете сохранить ссылку на segue.destinationViewController.

И в этом заключается проблема - prepareForSegue: - это не метод UITableViewCell, поэтому не будет возможности захватить контроллер детского вида.

Конечно, как вы обнаружили, вы получаете ошибку компиляции в любом случае!

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