2016-04-02 2 views
-2

Wenn also eine UIB-Taste gedrückt wird, möchte ich ein zufälliges 1 von 4 Bildern erscheinen lassen, aber ich möchte, dass eines der Bilder zu einer zufälligen Zeit erscheint, nachdem die Taste gedrückt wurde. Ich benutze Xcode und swift 2. Ihre Hilfe wird sehr geschätztZufallszeit Swift

+0

Also, wenn ich meine Finger klicke, will ich eine brandneue bmw Pop-up ... StackOverflow Code nicht für Sie schreiben. Was hast du schon probiert? –

+0

@LukePark Ich habe versucht, eine Variable auf ark4random_uniform (5) zu setzen und dann, wenn die Variable gleich einer der Zahlen ist, wird das entsprechende Bild angezeigt, aber das spricht nicht die zufällige Zeit an und ich habe NSTimer nie verstanden. –

+0

Was verstehst du nicht über NSTimer? –

Antwort

0

Sie brauchen NSTimer (und all die kniffligen Selektor basierte Sachen) überhaupt nicht. Mit Hilfe der Verzögerungsfunktion matt (irgendwo in stackowerflow, ich bin faul, um den Link :-) zu finden, könnte es so einfach sein wie

import Foundation 
import XCPlayground 
XCPlaygroundPage.currentPage.needsIndefiniteExecution = true 

func delay(delay:Double, closure:()->()) { 
    dispatch_after(
     dispatch_time(
      DISPATCH_TIME_NOW, 
      Int64(delay * Double(NSEC_PER_SEC)) 
     ), 
     dispatch_get_main_queue(), closure) 
} 

func randomDelay(range: Range<UInt32>, completion:()->()) { 
    if let first = range.first, 
     let last = range.last { 
     let d = arc4random_uniform(last) + first 
     print("now:  ",NSDate(),"delay:",d) 
     delay(Double(d)) { 
      completion() 
     } 
    } 
} 

let range:Range<UInt32> = 3..<10 

// run this on button press 
randomDelay(range) { 
    // update your image here 
    print("complete:", NSDate()) 
} 

es etwas druckt wie

now:  2016-04-02 07:33:24 +0000 delay: 9 
complete: 2016-04-02 07:33:34 +0000 

und auf einer anderen " presse '

now:  2016-04-02 07:39:55 +0000 delay: 5 
complete: 2016-04-02 07:40:00 +0000