gpt4 book ai didi

swift - 打开应用程序时自动更新 UI

转载 作者:搜寻专家 更新时间:2023-10-30 21:57:50 27 4
gpt4 key购买 nike

我的天气应用程序已经成功运行;显示当前测试数据等。但现在唯一的问题是我只能通过按下我制作的“刷新”按钮让应用程序获取数据。 如何让我的应用在打开时更新 UI?

这是我的工作代码:

import Foundation
import UIKit




class ViewController: UIViewController {
@IBOutlet weak var tempLabel: UILabel!
@IBOutlet weak var humidLabel: UILabel!
@IBOutlet weak var refresh: UIButton!
@IBOutlet weak var negitiveSymbol: UILabel!


func getTemp(){
var urlString = "http://torsher.ca/Weather/temperature.txt"
var url = NSURL(string: urlString)
let task = NSURLSession.sharedSession().dataTaskWithRequest(NSURLRequest(URL: url!, cachePolicy: NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 15.0)){(data, response, error) in
var urlContent = (NSString(data: data, encoding: NSUTF8StringEncoding))
var tempContent:String = urlContent as String
println(tempContent)

dispatch_async(dispatch_get_main_queue()) {
self.tempLabel.text = (tempContent)

}
}

task.resume()
}

func getHumid(){
var urlString = "http://torsher.ca/Weather/humidity.txt"
var url = NSURL(string: urlString)
let task = NSURLSession.sharedSession().dataTaskWithRequest(NSURLRequest(URL: url!, cachePolicy: NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 15.0)){(data, response, error) in
var urlContent = (NSString(data: data, encoding: NSUTF8StringEncoding))
var humidContent:String = urlContent as String
println(humidContent)

dispatch_async(dispatch_get_main_queue()) {
self.humidLabel.text = (humidContent)
}
}

task.resume()
}


@IBAction func refreshPressed(sender: AnyObject, forEvent event: UIEvent) {
getTemp()

}
@IBAction func refreshPress(sender: AnyObject, forEvent event: UIEvent) {
getHumid()
}



override func viewDidLoad() {
super.viewDidLoad()

}
}

我看到的是使用 AppDelegate.swift 文件及其内置的 func“func applicationDidEnterBackground(application: UIApplication)”,但我尝试的所有操作要么破坏了应用程序,要么就是不起作用。我想让应用程序运行 getTemp 函数、getHumid 函数,然后使用我在按钮的 IBAction 函数中所做的值更新 UI。

非常感谢任何帮助。

编辑:

  //
// ViewController.swift
// WeatherStation
//
// Created by on 2015-04-16.
// Copyright (c) 2015 . All rights reserved.
//

import Foundation
import UIKit




class ViewController: UIViewController {
@IBOutlet weak var tempLabel: UILabel!
@IBOutlet weak var humidLabel: UILabel!
@IBOutlet weak var refresh: UIButton!
@IBOutlet weak var negitiveSymbol: UILabel!
@IBOutlet weak var dateUpdate: UILabel!


func getTemp() //Gets the temeprature from the server and displays it.
{
var urlString = "http://torsher.ca/Weather/temperature.txt"
var url = NSURL(string: urlString)
let task = NSURLSession.sharedSession().dataTaskWithRequest(NSURLRequest(URL: url!, cachePolicy: NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 15.0)){(data, response, error) in
var urlContent = (NSString(data: data, encoding: NSUTF8StringEncoding))
var tempContent:String = urlContent as String
println(tempContent)

dispatch_async(dispatch_get_main_queue()) {
self.tempLabel.text = (tempContent)

}
}

task.resume()
}

func getHumid() //Gets the humidity from the server and displays it.
{
var urlString = "http://torsher.ca/Weather/humidity.txt"
var url = NSURL(string: urlString)
let task = NSURLSession.sharedSession().dataTaskWithRequest(NSURLRequest(URL: url!, cachePolicy: NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 15.0)){(data, response, error) in
var urlContent = (NSString(data: data, encoding: NSUTF8StringEncoding))
var humidContent:String = urlContent as String
println(humidContent)

dispatch_async(dispatch_get_main_queue()) {
self.humidLabel.text = (humidContent)
}
}

task.resume()
}


@IBAction func refreshPressed(sender: AnyObject, forEvent event: UIEvent) //Updates UI with current temperature when refresh is pressed.
{
getTemp()
}

@IBAction func refreshPress(sender: AnyObject, forEvent event: UIEvent) //Updates UI with current humidity when refresh is pressed.
{
getHumid()
}

func appWasOpened(notification: NSNotification!)
{
getHumid()
getTemp()
}

deinit {
NSNotificationCenter.defaultCenter().removeObserver(foregroundNotification)
}


override func viewDidLoad()
{
super.viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self, selector:
"appWasOpened:", name: UIApplicationWillEnterForegroundNotification, object:
nil)
}
}

尝试添加第二个解决方案,无法使用 deinit() 运行。

最佳答案

让应用程序在每次打开时都执行某项操作的标准技巧是在应用程序第一次打开时将日期存储在 NSUserDefaults 中,然后在应用程序再次打开时检查存储的日期与当前日期。如果已经过了足够的时间,你就去做,否则你不做。如果你这样做,那么你将当前日期存储回 NSUserDefaults 以开始一个新的周期。

关于swift - 打开应用程序时自动更新 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29710642/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com