2017-01-29 4 views
1

Я создаю подкласс UIPresentationController. UIPresentationController определяет инициализатор по умолчанию на так:Быстрый протокол по определенному классу?

init(presentedViewController: UIViewController , presentingViewController: UIViewController?) 

Теперь, для того, чтобы это работало, я хочу, чтобы мой presentedViewController соответствовать некоторому протоколу, скажем MyRandomProtocol.

Как перезаписать мой инициализатор так, чтобы он принимал первый аргумент как подкласс UIViewController, а тот, который специально соответствует MyRandomProtocol?

ответ

2

Вы можете использовать дженерики.

init<T: UIViewController>(presentedViewController: T, ...) where T: MyRandomProtocol { 
    //initialization code 
} 
+0

в конечном итоге с этим: 'требуемый инициализации (представлено: Т, где Т: ScrollViewProvider, представляя: UIViewController) { super.init (presentedViewController: представлены, presentingViewController: представление) }' –

+0

@SeanDanzeiser рад услышать, что это сработало :) –

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