2014-10-26 3 views
0

В моей раскадровке у меня есть контроллер вида (называйте его «источником»), который нажимает на другой контроллер вида (скажем, «пункт назначения»).Элегантный способ подключения нескольких видов к одному segue

Толчок может быть вызван одной из трех мест:

  1. UIButton внутри заголовка табличного
  2. Один из прототипов элементов (в выбранной ячейке ...)
  3. один из ячейки коллекционного вида, которые находятся внутри ячейки прототипа другого типа

В настоящее время у меня есть сегменты, которые я нажимал Ctrl + перетаскивал из каждого из этих видов в пункт назначения VC и выдавал все из них е и тот же идентификатор (так как все они толкают же VC ...) Это работает безупречно, за исключением этого досадного вещица, которая показывает каждый раз, когда я ударил Cmd + R:

enter image description here

Ну, я пытался быть хорошим гражданином и привязывать все мои соперники к IBAction в источнике VC, где я звоню performSegueWithIdentifier:, но я не могу сделать это в ячейке и cel в предвыборном предложении ... Только для кнопки в моем заголовке.

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

Просто, чтобы понять - это то, как она выглядит в данный момент:

enter image description here

Любые идеи?

ответ

1

Вы можете придерживаться трех шаблонов segues, но дать каждому отдельный, но связанный идентификатор, например PushDetailButton, PushDetailCell и так далее.

В prepareForSegue вы можете использовать hasPrefix:@"PushDetail" вместо isEqual, чтобы соответствовать любому сегменту, идентификатор которого начинается со строки, а не для соответствия всей строке.

+0

сладкая идея ..... – Fattie

+0

Я все еще думаю, что яблоко должно позволить подключить более одного вида к segue, но вы идете - самое изящное обходное решение, которое я видел ... Так что спасибо за творческое решение ... (: –

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