これは、スタックオーバーフロー(これはiOS/Swiftの初心者です)と同様のさまざまな質問を見て、助けてくれたしかし、今私の質問は実際には次のようになります。画像が入ったボタンを正しく作成するには
最初のものは、viewDidLoadメソッド内で関数をネストすることができるかどうかです。 func createButtonとして試してみると、2つの異なる新しいボタンも表示されません。実際、ストーリーボードを使って追加した特異な画像以外は何も表示されません。
2番目の質問は、画像を参照する正しい方法です。コードを実行しようとすると、単に青い背景を持つ2つのボタンが作成されるためです。これに対する拡張は、自分自身の関数を参照する有効な方法が何であるか分かりませんので、ボタン作成の "アクション:"部分の正しい構文は何ですか。
コードは以下の通りです:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
var imageNames : [String] = ["dino2Button", "dino3Button"]
var yposition : Int = 133
let xposition : Int = 112
let width : Int = 150
let height : Int = 113
//func createButton() {
for index in 0...1 {
print("index is: \(index)")
let image = UIImage(named: imageNames[index]) as UIImage?
let button = UIButton(type: .roundedRect) as UIButton
button.frame = CGRect(x: xposition, y: (yposition+10), width: width, height: height)
yposition += height + 10;
button.setImage(image, for: .normal)
button.addTarget(self, action: "", for: .touchUpInside)
self.view.addSubview(button)
}
//}
}
そして再び、私は2日間の総計のためのiOSをやってきました。
いくつかの問題がここで間違っています。まず、おそらく最前線 - iOSとスウィフトを学ぶのに2日間しかかからないのであれば、フレームの代わりに自動レイアウトを学ぶために**今**の時間を費やすことを検討してください。デバイスごとにフレームサイズが異なり、自動レイアウトは非常に価値があります。第二に、空白のイメージが表示されている理由は、UIImageがゼロであるためです。大文字小文字を含めてスペルを確認してください。また、ファイル拡張子なしで動作する唯一のUIImage(名前:)は、PNGです(大文字と小文字も区別されます)。 .jpgの場合は、「.jpg」を追加する必要があります。 – dfd
第3に、addTargetのアクションはSelectorタイプなので、構文的にmakeは**#selector(myFunc)**となり、** print( "got here")**などの単純なfuncを追加して、正しくがんばろう! – dfd
@dfd役に立つポインタをありがとう。明らかに私の問題は、単に.setImageではなくbutton.setBackgroundImageであるはずだったということでした。彼らのタイプは.jpgであっても.pngではないかもしれないが(私はそれをまだチェックしていないと思う)。私は確かに自動レイアウトを調べます。また、iOS向けに開発するときのストーリーボードは、レイアウトのために頻繁に使用されるか、ストーリーボードとコードのバランスの取れた組み合わせですか?乾杯! – SomeStudent