import Foundation
import UIKit
class GameController: UIViewController {
@IBOutlet weak var gameImage: UIImageView!
@IBOutlet weak var softButton: UIButton!
@IBOutlet weak var notButton: UIButton!
@IBOutlet weak var scoreLabel: UILabel!
var timer = NSTimer()
override func viewDidLoad() {
super.viewDidLoad()
self.gameImage.image = UIImage(named: "king1")
}
//choose random image and set as game image
func randomGameImage() -> String {
//these arrays hold the image names
let kingArray = ["king1", "king2", "king3"]
let notArray = ["not1", "not2", "not3"]
//this number decides which array to pull from
let randomNumber = Int(arc4random_uniform(2))
//this number picks what image from the array
let imageNumber = Int(arc4random_uniform(3))
//holds the name of the image
var gameImageString:String
//sets image name
if randomNumber >= 1 {
gameImageString = kingArray[imageNumber]
}else{
gameImageString = notArray[imageNumber]
}
//sets image
self.gameImage.image = UIImage(named: gameImageString)
//returns name of image
return gameImageString
}
var bool = true
var score = 0;
var imageShowing:String = randomGameImage()//"king"
(インスタンスメソッドの使用タイプ「GameController」オン「randomGameImageは」;?あなたの代わりにタイプ「GameController」の値を使用することを意味した)他の関数の本体で自分の関数を呼び出すことはできますが、クラス自体では呼び出せないのはなぜですか?
@IBAction func kingTapped(sender: AnyObject) {
if imageShowing.rangeOfString("king") != nil {
score += 1
scoreLabel.text = String(score)
imageShowing = randomGameImage()
}else{
performSegueWithIdentifier("gameOver", sender: bool)
}
}
@IBAction func notTapped(sender: AnyObject) {
if imageShowing.rangeOfString("not") != nil {
score += 1
scoreLabel.text = String(score)
imageShowing = randomGameImage()
}else{
performSegueWithIdentifier("gameOver", sender: bool)
}
}
}
私が呼び出すことができる理由
は、誰かが私に教えてくださいすることができ他のメソッドではrandomGameImageメソッドですが、メソッド外ではありません。申し訳ありません、私はプログラミングのノブです。
私はプログラミング用語について幅広い知識がありません。もしあなたが説明できれば...私はrandomGameImageをクラスメソッドにすることができますか?これは私が書いた関数/メソッドをどうやって使うのかなんてばかげているようです。 – LearningCurve
あなたの 'randomGameImage()'はまだ初期化されていないかもしれないインスタンスプロパティ 'self.gameImage'にアクセスしています。したがって、行を削除すると、それをクラスメソッドにすることができます。 'func randomGameImage()'の前に 'class'の接頭辞を付けるだけです。しかし、他の部分を修正する必要があります。 – OOPer
メソッドにインスタンスプロパティが含まれていない場合でも、パラメータがインスタンスプロパティであれば同じエラーが発生しますが、正しいですか? – LearningCurve