На ваш вопрос немного сложно ответить, как указано в настоящее время, потому что не совсем понятно, что вы делаете.Например, не ясно, используете ли вы раскадровки или нет.
Если да, то вы, вероятно, захотите определить свои сегменты в раскадровке и позволить UIKit вызывать их для вас.Эта документация содержит обзор, который, надеюсь, поможет вам.В частности, вам не нужно делать переход вручную, потому что UIKit сделает это за вас, как только вы настроите его в раскадровке (выделено мной):
Вам не нужно запускатьSegues программно.Во время выполнения UIKit загружает сегменты, связанные с контроллером представления, и соединяет их с соответствующими элементами.Когда пользователь взаимодействует с элементом, UIKit загружает соответствующий контроллер представления, уведомляет ваше приложение о предстоящем переходе и выполняет переход. Вы можете использовать уведомления, отправленные UIKit, для передачи данных новому контроллеру представления или предотвращения общего перехода.
На рисунке 9-4 вы увидите поток событийпроцесса перехода.В частности, обратите внимание, что если вы переопределяете prepareForSegue:sender:
в своем контроллере представления исходного кода для перехода, то это ваша возможность подготовить данные и отправить их в контроллер представления назначения (либо установка просмотра representedObject
для контроллера представления назначения, либочерез пользовательский метод setter, определенный для вашего класса контроллера представления назначения).Текст описания под этим рисунком гласит:
Метод prepareForSegue:sender:
контроллера представления источника позволяет передавать данные из контроллера представления источника в контроллер представления назначения. Объект UIStoryboardSegue, переданный методу, содержит ссылку на контроллер представления назначения вместе с другой информацией, связанной с segue.
Если вы не используете раскадровки, то выпо сути, делать то же самое вручную.Вы выделяете подкласс UIViewController, который вы хотите показать в ответ на касание в элементе ячейки, а затем устанавливаете его representedObject
для данных, которые он должен отображать (или вызываете пользовательский метод, определенный этим классом, и передаете данные в контроллер представлениянеобходимо отобразить), затем вы показываете вид контроллера.Чтобы представить его вручную, вам нужно прочитать документ Представление View Controller от Apple.В частности:
Представление контроллера представления
Существует несколько способов инициирования представления контроллера представления:
Использование перехода для автоматического представления контроллера представления,Seguez создает экземпляр и представляет контроллер представления, используя информацию, указанную вами в Интерфейсном Разработчике.Для получения дополнительной информации о настройке сегментов см. Использование сегментов .Используйте метод showViewController:sender:
или showDetailViewController:sender:
для отображения контроллера вида.В пользовательских контроллерах представления вы можете изменить поведение этих методов на что-то более подходящее для вашего контроллера представления.Вызовите метод presentViewController:animated:completion:
, чтобы представить контроллер представления модально.
Надеюсь, этого достаточно, чтобы начать работу.Если нет, то, возможно, проясните свой вопрос с более широким контекстом, и мы попробуем еще раз.