2016-12-31 3 views
0
class CustomSegue: UIStoryboardSegue { 

    override init(identifier: String?, source: UIViewController, destination: UIViewController) { 
     super.init(identifier: identifier, source: source, destination: destination) 
    } 

    override func perform() { 

     self.source.navigationController?.pushViewController(self.destination, animated: true) 

    } 

} 

В приведенном выше коде я нарушаю поведение segue. Он должен использовать pushViewController только в том случае, если вид Показать (например: Push) для другого типа он должен выполнять поведение по умолчанию, которое может.UIStoryboardSegue Подкласс идентифицирует вид segue

Как найти Kind of segue в подклассе perform() метод?

т.е.

 override func perform() { 

      if kind==Push { 
       self.source.navigationController?.pushViewController(self.destination, animated: true) 
      } else { 
       super.perform() 
      } 

     } 

ответ

0

В раскадровке выберите Segue как пользовательские Segue и выберите вид, как пользовательский SEGUE, поведение по умолчанию просто выберите показать переход (например, нажатие)

enter image description here

+0

Но в коде perform(), как мы узнаем его поведение. Я хочу изменить его, только если его Show (например, Push) – andyPaul

+0

Вы не можете получить вид от выполнения. Вам нужно создать разный segue в раскадровке, а не в коде. Один segue, как пользовательский segue, который имеет push-переход, а другой - по умолчанию. – Manoj