2016-03-29 10 views
0

Ich bin wirklich neu in XCode (swift), und ich versuche, eine UIImageView zufällig eines von drei Bildern zu zeigen, aber wenn ich zum zweiten ViewController im Simulator wechseln Es passiert nichts und XCode hebt das Ende der ViewDidLoad-Funktion hervor, die Thread 1: Haltepunkt 1.1 sagt.Ändern des Bildes in UIImageView, andere XCode-Probleme

Wenn es eine bessere oder zuverlässigere Möglichkeit gibt, UIImageView Bilder zu wechseln, würde ich es gerne wissen.

Mein aktueller Code:

import UIKit 

let imageInitialIdentity = arc4random_uniform(3) 

class SecondViewController: UIViewController { 



    override func viewDidLoad() { 
     super.viewDidLoad() 



     if(imageInitialIdentity == 0){ 
      imageGuess.image = UIImage(named: "0ps.pngs") 
      imageGuess.frame = CGRect(x: 51, y: 47, width: 500, height: 340) 
     } 
     if(imageInitialIdentity == 1){ 
      imageGuess.image = UIImage(named: "250ps.png") 
      imageGuess.frame = CGRect(x: 51, y: 47, width: 500, height: 340) 
     } 
     if(imageInitialIdentity == 2){ 
      imageGuess.image = UIImage(named: "500ps.png") 
      imageGuess.frame = CGRect(x: 51, y: 47, width: 500, height: 340) 
     } 
     // Do any additional setup after loading the view, typically from a nib. 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 

    } 


    @IBOutlet weak var imageGuess: UIImageView! 

    var imageIdentity = imageInitialIdentity 
    var score = 0 
    let imageZero = UIImage.init(named: "0ps") 
    let image250 = UIImage.init(named: "250ps") 
    let image500 = UIImage.init(named: "500ps") 





    @IBAction func guessZero(sender: UIButton) { 

     //if zero matches the picture 0, add a point 
     if imageIdentity == 0{ 
      score++ 
     } 
     else{ 
      //print incorrect, corect answer is 0 
     } 

      //randomizes another picture 
      let rand1 = arc4random_uniform(3) 
      if rand1 == 0 { 
       imageGuess.image = UIImage(named: "0ps.png") 
       imageGuess.frame = CGRect(x: 51, y: 47, width: 500, height: 340) 
       imageIdentity = 0 
      } 
      else if rand1 == 1{ 
       imageGuess.image = UIImage(named:"250ps.png") 
       imageGuess.frame = CGRect(x: 51, y: 47, width: 500, height: 340) 
       imageIdentity = 1 
      } 
      else if rand1 == 2{ 
       imageGuess.image = UIImage(named:"500ps.png") 
       imageGuess.frame = CGRect(x: 51, y: 47, width: 500, height: 340) 
       imageIdentity = 2 
      } 

    } 

    @IBAction func guess250(sender: UIButton) { 
     // if 150 matches the picture of 250, return true 
     //randomizes another picture 
     //adds one to score? 
     if imageIdentity == 1{ 
      score++ 
     } 


     let rand2 = arc4random_uniform(3) 
     if rand2 == 0 { 
      imageGuess.image = UIImage(named:"0ps.png") 
      imageGuess.frame = CGRect(x: 51, y: 47, width: 500, height: 340) 
      imageIdentity = 0 
     } 
     else if rand2 == 1{ 
      imageGuess.image = UIImage(named:"250ps.png") 
      imageGuess.frame = CGRect(x: 51, y: 47, width: 500, height: 340) 
      imageIdentity = 1 

     } 
     else if rand2 == 2{ 
      imageGuess.image = UIImage(named:"500ps.png") 
      imageGuess.frame = CGRect(x: 51, y: 47, width: 500, height: 340) 
      imageIdentity = 2 
     } 
    } 

    @IBAction func guess500(sender: UIButton) { 
     //if 500 matches the picture of 500, return true 
     //randomizes another picture 
     if imageIdentity == 2{ 
      score++ 
     } 


     let rand3 = arc4random_uniform(3) 
     if rand3 == 0 { 
      imageGuess.image = UIImage(named:"0ps.png") 
      imageGuess.frame = CGRect(x: 51, y: 47, width: 500, height: 340) 
      imageIdentity = 0 
     } 
     else if rand3 == 1{ 
      imageGuess.image = UIImage(named:"250ps.png") 
      imageGuess.frame = CGRect(x: 51, y: 47, width: 500, height: 340) 
      imageIdentity = 1 

     } 
     else if rand3 == 2{ 
      imageGuess.image = UIImage(named:"500ps.png") 
      imageGuess.frame = CGRect(x: 51, y: 47, width: 500, height: 340) 
      imageIdentity = 2 
     } 
    } 

} 
+1

Klingt, als ob Sie einen Haltepunkt gesetzt haben. Deaktivieren oder löschen Sie den Haltepunkt. – ryantxr

+0

Sie können den Anweisungen http://stackoverflow.com/questions/25750595/error-thread-1-breakpoint-1-1 hier folgen, um Breakpoints auszuschalten. – beyowulf

Antwort

0

Es sieht aus wie Sie einen Haltepunkt festgelegt haben. Normalerweise verursacht durch einen Unfall beim Klicken, um Fehler anzuzeigen. Wenn Sie auf den blauen Pfeil Schaltfläche klicken, wird es den Haltepunkt deaktivieren:

enter image description here

0

Wenn der Code von einem Viewcontroller zu diesem SecondViewController läuft und Programmunterbrechungen bei viewDidLoad, können Sie überprüfen möchten, wie das funktioniert Code endet mit seiner vorherigen Klasse und was bewirkt, dass SecondViewController-Klasse ausgeführt wird. Sobald Sie damit fertig sind, können Sie Ihre zufälligen Methoden aus viewDidLoad verschieben, um herauszufinden, was genau den Absturz verursacht. so etwas wie:

override func viewDidLoad() 
{ 
    super.viewDidLoad() 
    randomMethod() 
} 
func randomMethod() // put a break point here if viewDidLoad passes 
{ 
    if(imageInitialIdentity == 0){ 
    ..... your code .... 
    } 
} 
0

Um Ihre Frage zu beantworten: „Wenn es eine bessere ist oder zuverlässigere Weise UIImageView wechseln Bilder zu erhalten“.

Kurze Antwort, nein, so ist es gemacht. Eine Sache, die Sie aufpassen sollten, ist, dass Sie das Bild auf den Hauptfaden einstellen müssen, um Änderung zu sehen. Die ViewDidLoad-Methode läuft sicherlich auf dem Hauptthread also keine Sorgen. Wenn Sie das Image des ImageView zu einem späteren Zeitpunkt aktualisieren möchten, können Sie Ihre Benutzeroberfläche mit GCD ordnungsgemäß aktualisieren.

Wenn Sie schnell zwischen zwei Bildern in einer Bildansicht wechseln müssen, können Sie die Eigenschaft markedImage verwenden. Sie haben diese Eigenschaft wie für die Bildeigenschaft festgelegt (natürlich mit einem anderen Bild). Dann müssen Sie nur die markierte Eigenschaft auf JA oder NEIN setzen.

UIImageView *iv = [UIImageView new]; 
UIImage *firstImage = [UIImage imageNamed:@"first_image.png"]; 
iv.image = firstImage; 
iv.highlightedImage = [UIImage imageNamed:@"second_image.png"]; 
// Call below code whenever you want to switch the image, by setting the boolean. 
dispatch_async(dispatch_get_main_queue(), ^{ 
    iv.highlighted = YES; 
}); 

Eine Sache, die ich empfehlen würde die Bildgröße Eigenschaft für die Imageview-Rahmen verwendet.

iv.frame = CGRectMake(0, 0, firstImage.size.width, firstImage.size.height);