2016-02-20 3 views
0

У меня есть несколько настраиваемых всплывающих окон, которые я вызываю (чтобы настроить его, оживить всплывающее окно и оживить увольнение), но я хочу иметь одну переменную, которую я могу заменить в несколько функций, которые могут быть установлены оператором switch с одной переменной. Поэтому у меня нет 4+ каждой функции с тем же кодом, но с разными именами uiView. Как это делается, пожалуйста?Swift: использование переменной для описания UIViews

var myPopupView:NotePopUpView! 
var myInformationPopUpView:InformationPopUpView! 
var myDatePopUpView:DatePopUpView! 
var myPainDiagramView:PainDiagramPopUpView! 

func notePopUpCalled() { 
    if (myPopupView != nil) { 
    self.myPopupView.view.removeFromSuperview() 
    } 

// making different size pop up for different screens 
    var popUpWidth = GlobalConstants.ScreenStats.screenWidth - 60 

    if UIScreen.mainScreen().bounds.size.width > 320 { 
    if UIScreen.mainScreen().scale == 3 { 
     popUpWidth = 320 
    } else { 
     popUpWidth = 320 
    } 
    } else { 
    popUpWidth = 283 
    } 

self.myPopupView = NotePopUpView(frame: CGRect(x: 20, y: 350, width: popUpWidth, height: 334)) 
myPopupView.center = self.view.center 
self.view.addSubview(myPopupView) 
showAnimate() 

} 
+0

Подумайте [протоколы] (https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Protocols.html) или суперклассы. – tktsubota

+0

Это хорошо, но это не уменьшает код, как я надеялся. – SashaZ

ответ

0

Обычно, когда необходимо применять один метод для разных типов, рекомендуется использовать дженерики.

func setupView<T: UIView>(view: T) { 
    //Make all setups 
} 

Также вы можете использовать as? оператора понижающее приведение ваших типов представлений для UIView.

Надеюсь, это поможет.

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