Тип экземпляра UIView из Obj-C в Swift

Привет всем, я приближаюсь к программированию Swift, и сразу чувствую, что я новичок в Swift.

В моем проекте на Obj-C я создал много классов UIView, которые использовал в своем приложении.

У меня проблема с реализацией этих классов UIView из Obj-C для Swift...

Короче говоря, до сих пор я всегда использовал это... Мой класс UIView имел различные инициализации с фреймом и т. д. ... но непосредственно тип экземпляра, который разработал все

-(instancetype)initializeNotificationViewWithTitle:(NSString *)notificationTitle
                               notificationMessage:(NSString *)notificationMessage
                                  notificationType:(UTNotificationType)notificationType
                                  notificationMode:(UTNotificationMode)notificationMode 

теперь я не могу вписать его в Swift, многие из вас наверняка знают, что Swift самый простой из Obj-C, но я все еще не могу адаптировать

Вы можете объяснить мне, как реализовать эту функцию, которую я опубликовал в Obj-C Swift?


person kAiN    schedule 12.06.2015    source источник
comment
Как вам удалось создать такой конструктор intiailizeNotificationViewWithTitle:. Выдавал ли компилятор какую-либо ошибку, это должно быть либо initIalizeNotificationViewWithTitle:, либо initWithNotificationViewTitle:   -  person Sandeep    schedule 12.06.2015
comment
для меня это всегда работало очень хорошо, верните меня даже без предупреждения ... но быстро, насколько я помню, настроенная инициализация в конкретном контроллере представления? Instantiatetype swif в том, как он реализован   -  person kAiN    schedule 12.06.2015
comment
Ну, это связано с тем, как работает цель c, ваш метод является методом экземпляра, и вы можете вызвать его после того, как вы его выделили. Но это также не правильный инициализатор в Objective C. Таким образом, он не мог сделать вывод, что для быстрого должным образом.   -  person Sandeep    schedule 12.06.2015
comment
хорошо, вы можете сделать мне пример? чтобы лучше понять   -  person kAiN    schedule 12.06.2015


Ответы (1)


Предоставленный вами метод выглядит как простой метод инициализации, а метод инициализации в Swift выглядит как

init(title: String, message: String, type: UTNotificationType, mode: UTNotificationMode) {
    //init
}

и использовать его как

let aView = NotificationView(title:"title", message:"message", type: someType, mode: someMode)
person dopcn    schedule 12.06.2015
comment
Привет и спасибо за ваш ответ... но у меня возникла проблема после реализации вашего решения... после ввода init (заголовок: String, сообщение: String, тип: UTNotificationType, режим: UTNotificationMode) { // init } компилятор выдает мне ошибку: super.init не вызывается перед возвратом из инициализатора Они наверное слишком глубоки в obj-C чтобы понять swift хотя все говорят что вроде намного проще... не могу понять почему я возвращаю эту ошибку - person kAiN; 12.06.2015
comment
@rory, потому что super.init() действительно не вызывается, это просто пример. Кажется, вы не узнали о методе инициализации в Swift. Мой другой ответ здесь может помочь вы понимаете, но за исключением того, что вам действительно нужно прочитать главу о методах инициализации на быстром языке программирования - person dopcn; 13.06.2015