Ios Can';t获取UIButton调用Swift 4中的代码块
我试图调用一大块代码,以便在单击按钮(GoButton)后运行,我尝试过这样做,但它只是崩溃了,有时我也会得到一个错误,即我的按钮等于零。有什么建议吗?下面的所有代码在没有按钮的情况下都可以正常工作,我希望它在按下后运行。另外,我是swift编程新手,如果这真的很简单,我很抱歉。谢谢 代码如下:Ios Can';t获取UIButton调用Swift 4中的代码块,ios,swift,xcode,button,uibutton,Ios,Swift,Xcode,Button,Uibutton,我试图调用一大块代码,以便在单击按钮(GoButton)后运行,我尝试过这样做,但它只是崩溃了,有时我也会得到一个错误,即我的按钮等于零。有什么建议吗?下面的所有代码在没有按钮的情况下都可以正常工作,我希望它在按下后运行。另外,我是swift编程新手,如果这真的很简单,我很抱歉。谢谢 代码如下: override func viewDidLoad() { super.viewDidLoad() func GoButton(_ sender: Any) {
override func viewDidLoad() {
super.viewDidLoad()
func GoButton(_ sender: Any) {
guard let APIUrl = URL(string: "https://api.openweathermap.org/data/2.5/weather?q=Crowland&appid=***APIKEY***&units=Metric") else { return }
URLSession.shared.dataTask(with: APIUrl) { data, response, error in
guard let data = data else { return }
let decoder = JSONDecoder()
do {
let weatherData = try decoder.decode(MyWeather.self, from: data)
if (self.MainLabel != nil)
{
if let gmain = weatherData.weather?.description {
print(gmain)
DispatchQueue.main.async {
self.MainLabel.text! = "Current Weather in: " + String (gmain)
}
}
}
if (self.LocationLabel != nil)
{
if let gmain = weatherData.name {
print(gmain)
DispatchQueue.main.async {
self.LocationLabel.text! = "Current Weather in: " + String (gmain)
}
}
}
if (self.HumidityLabel != nil)
{
if let ghumidity = weatherData.main?.humidity
{
print(ghumidity, "THIS IS HUMIDITY")
DispatchQueue.main.async {
self.HumidityLabel.text! = String (ghumidity)
}
}
}
if (self.WindLabel != nil)
{
if let gspeed = weatherData.wind?.speed {
print(gspeed, "THIS IS THE SPEED")
DispatchQueue.main.async {
self.WindLabel.text! = String(gspeed) + " mph"
}
}
}
if (self.TempLabel != nil)
{
if let ggtemp = weatherData.main?.temp {
print(ggtemp, "THIS IS THE TEMP")
DispatchQueue.main.async {
self.TempLabel.text! = String (ggtemp) + " c"
}
}
}
} catch {
print(error.localizedDescription)
}
}.resume()
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
您的
GoButton
函数似乎在viewDidLoad
方法中?这绝对不应该是这种情况,因为默认情况下,它们是对外部世界隐藏的
如果您使用的是情节提要,将按钮单击链接到动作的正确方法是通过情节提要和IBActions。有很多视频/文本教程向您展示如何做到这一点。这里是一个视频教程,我个人喜欢,因为它的清晰度考虑到你是新的斯威夫特-。(我既不拥有此链接中的视频内容,也与此链接中的视频内容没有任何关联,我只是将其链接到此处,因为我认为这可能会有所帮助)。您如何初始化按钮?在哪一行它崩溃了,或者请用崩溃结果更新您的问题