2016-03-29 70 views
0

我真的很新,XCode(swift),我试图让一个UIImageView随机显示三个图像之一,但是当我切换到模拟器中的第二个viewController ,什么也没有发生,并且XCode突出显示了线程1:断点1.1的ViewDidLoad函数的结束。更改UIImageView,其他XCode问题中的图像

如果有更好或更可靠的方法让UIImageView切换图像,我一定会想知道。

我当前的代码:

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

听起来像你有一个断点设置。禁用或删除断点。 – ryantxr

+0

您可以按照此处的说明http://stackoverflow.com/questions/25750595/error-thread-1-breakpoint-1-1了解如何关闭断点。 – beyowulf

回答

0

它看起来就像你设置一个断点。通常由于点击查看错误而导致意外。如果代码是从一个视图控制器运行到这个SecondViewController

enter image description here

0

,并在viewDidLoad中程序中断,你可能要检查怎么做的:如果你点击喜欢按钮的蓝色箭头,将停用破发点代码完成了它的前一个类,并使其运行SecondViewController类。一旦你完成了检查,你可能想要将你的随机方法移出viewDidLoad来找出究竟是什么导致了崩溃。如:

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

要回答你的问题,“如果有更好或更可靠的方式让UIImageView切换图像”。

简短的回答,不,这是它的方式。 你应该注意的一件事是,你必须在主线程上设置图像才能看到变化。 viewDidLoad方法当然是在主线程上运行,所以不用担心。 如果您决定稍后更新imageview的图片,则可以使用GCD来正确更新您的用户界面。

dispatch_async(dispatch_get_main_queue(), ^{ 
    // update your UI here 
}); 

如果您需要在imageview中的两个图像之间快速切换,可以使用highlightImage属性。 您设置此属性与您为图像属性(当然不同的图像)相同。然后,您只需将突出显示的属性设置为YES或NO。

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; 
}); 

我推荐的一件事是使用imageview的框架的图像大小属性。

iv.frame = CGRectMake(0, 0, firstImage.size.width, firstImage.size.height); 
相关问题