允許我通過說我看到了類似於堆棧溢出的不同問題(並且我是iOS/Swift的總新手),並且他們確實有幫助。但是,現在我的問題如下,實際上是2.如何正確創建一個帶有內部圖像的按鈕
第一個問題是,是否可以在viewDidLoad方法中嵌套函數?當我嘗試它作爲func createButton時,它甚至不會顯示兩個不同的新按鈕,事實上它除了通過故事板添加的奇異圖像外沒有任何顯示。
第二個問題是引用圖像的正確方法是什麼,因爲當我嘗試運行我的代碼時,我看到創建了兩個只有藍色背景的按鈕。對此的擴展是創建按鈕的「action:」部分的正確語法,因爲我不知道什麼是引用您自己的函數的有效方法。
代碼如下:
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)
}
//}
}
再一次,我一直在做的iOS爲總計兩天。
這裏有幾件事情是錯誤的。首先,也許最重要的是 - 如果你僅僅花了兩天的時間學習iOS和Swift(並且你做得很好),現在考慮花時間**來學習自動佈局而不是幀。不同的設備具有不同的幀大小,自動佈局非常值得。其次,您看到空白/藍色圖像的原因是由於您的UIImage爲零。檢查拼寫,包括大小寫。而且,沒有文件擴展名的唯一UIImage(named :)是PNG(也區分大小寫)。如果它是.jpg,則需要添加「.jpg」。 – dfd
第三,addTarget中的動作是Selector類型 - 因此語法上的make是**#selector(myFunc)**並添加一個簡單的func來執行類似於** print(「got here」)**的操作,以確保事物被連線正確。祝你好運! – dfd
@dfd感謝您的幫助指針。顯然我的問題是,它應該是button.setBackgroundImage而不是.setImage;雖然可能他們的類型可能是.jpg而不是.png(我認爲我沒有檢查過)。我一定會考慮自動佈局。另外,在爲iOS開發時,一個簡單的問題是更經常用於佈局的故事板,還是故事板和代碼的平衡組合?乾杯! – SomeStudent