2015-01-12 6 views
0

Я хочу использовать один и тот же протокол для двух разных классов. Это для двух классов UIStoryboardSegue, обычного и разматывающего. В моем первом классе GameSegue.swift я объявил этот протоколSwift - тот же протокол для двух разных классов

@objc protocol ViewControllerWithBackgroundImage { 

    var backgroundImage: UIImageView { set get } 

} 

Я использую этот протокол, чтобы иметь доступ к свойству ViewControllers backgroundImage. В первом классе GameSegue.swift, нормальный переход, backgroundImage анимирует 10 px вверх. Итак, во втором классе GameSegueUnwind.swift, я хочу сделать то же самое назад, переместите фон 10 px вниз. Но чтобы получить доступ к свойству backgroundImage, мне нужен этот протокол. Поэтому было бы полезно не объявлять другой протокол, а вместо этого использовать то же самое.

Любая идея, как это возможно?

+0

Что вы пробовали? Если протокол объявлен в одном файле, он доступен везде внутри проекта. –

+0

О, извините, я что-то пропустил. Конечно, я могу использовать это свойство также в классе разматывания. Удалить этот вопрос? – Codey

+0

Не беспокойтесь! Наверное, хорошая идея. –

ответ

1

Во втором классе просто объявить новый переменный делегат

class GameSegueUnwind { 
    var secondDelegate: ViewControllerWithBackgroundImage? 
} 

и вы сможете получить доступ к функции в любом другом классе, который соответствует протоколу. Разумеется, в соответствующем классе не забудьте объявить, что у него есть обработчик делегата в методе подготовки к методу segue

destinatonViewController.secondDelegate = self 
Смежные вопросы