2015-05-05 9 views
0

У меня есть несколько различных функций Coregraphics, которые выносят различные элементы часового пояса. Логика, которую я собираюсь собрать, определяет, какой аспект поверхности часов отображается на основе переменной, выведенной из текущего часа. Все методы рисования перечислены в отдельном быстром классе/файле. Вместо того, чтобы создавать эту колонку инструкций if, как я могу упростить этот процесс, чтобы вставить переменную в вызванный метод? В этом вы можете видеть, что drawCanvas04() связан с 16:00 (или 16 часов).Методы вызова, основанные на переменной (SWIFT)

class ViewController: UIViewController { 

    func updateTime() { 

    var date:NSDate = NSDate() 
    var calendar:NSCalendar = NSCalendar.currentCalendar() 
    var components:NSDateComponents = calendar.components(NSCalendarUnit.CalendarUnitHour | NSCalendarUnit.CalendarUnitMinute | NSCalendarUnit.CalendarUnitSecond, fromDate: date) 
    var hour = components.hour 
    var minute = components.minute 
    var seconds = components.second 

    var time = "\(hour) : \(minute) : \(seconds)" 
    println("\(time)") 


    if hour == 16 || hour == 04 { 

     ClockStyleKit.drawCanvas04() 

    } else { 

     if hour == 17 || hour == 05 { 

     ClockStyleKit.drawCanvas05() 

    } else { 

     if hour == 18 || hour == 06 { 

     ClockStyleKit.drawCanvas06() 

    } else { 

     if hour == 19 || hour == 07 { 

     ClockStyleKit.drawCanvas07() 

    } else { 

     if hour == 20 || hour == 08 { 

     ClockStyleKit.drawCanvas08() 

    } else { 

     if hour == 21 || hour == 09 { 

     ClockStyleKit.drawCanvas09() 

    } else { 

     if hour == 22 || hour == 10 { 

     ClockStyleKit.drawCanvas10() 

    } 

    if hour == 23 || hour == 11 { 

     ClockStyleKit.drawCanvas11() 

    } 

    if hour == 24 || hour = 12 { 

     ClockStyleKit.drawCanvas12() 

    } 

}

Ниже приведен пример способа вытягивания stylekit называют:

public class func drawCanvas07() { 
    //// Color Declarations 
    let color0 = UIColor(red: 0.894, green: 0.000, blue: 0.476, alpha: 1.000) 

    //// HOUR7 Drawing 
    var hOUR7Path = UIBezierPath(ovalInRect: CGRectMake(65.5, 155.99, 24, 24)) 
    color0.setFill() 
    hOUR7Path.fill() 

} 

ответ

0

использовать параметры. Также сократите методы класса, используйте методы экземпляра, а не self.drawCanvas().

Как так:

func drawCanvas(canvas:Int) { 
    switch canvas { 
     case 0: 
     // do something here for 0 o clock 
     case 1: 
     // 1 o clock 
     // etc, 
     default: 
     // in case somehow you run out of bounds 
    } 
} 

и вызвать его с помощью drawCanvas(10).

+0

Должен ли метод drawrect размещаться в другом классе или он должен быть вложен в метод расчета времени? У меня возникли трудности с структурированием кода для передачи переменной часа без запуска «Невозможно вызывать drawCanvas» с помощью списка аргументов типа «(Int)». – softdownfeathers

+0

Также кажется, что единственным способом я могу использовать метод экземпляра self. drawCanvas - это когда я вызываю его из файла StyleKit, иначе он просит меня для ClockStyleKit.drawCanvas(). – softdownfeathers

+0

Еще раз, не используйте методы класса. Вы использовали методы класса, поэтому вам пришлось выполнять 'ClockStyleKit.drawCanvas() '. – Schemetrical

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