Ios 为什么UIImage不会改变?

Ios 为什么UIImage不会改变?,ios,swift,uiimage,Ios,Swift,Uiimage,我寻找了很多资源,但没有一个对我有用。我正在尝试根据一周中的某一天更改图像。我在操场上测试了calendar方法,它将返回正确的预期数字。然而,我对Swift、编程和通用性还很陌生,对于imageChange方法为什么不会改变我一无所知 import UIKit class ViewController: UIViewController { @IBOutlet weak var schedule: UIImageView! override func viewDidL

我寻找了很多资源,但没有一个对我有用。我正在尝试根据一周中的某一天更改图像。我在操场上测试了calendar方法,它将返回正确的预期数字。然而,我对Swift、编程和通用性还很陌生,对于imageChange方法为什么不会改变我一无所知

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var schedule: UIImageView!



    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


    var monday = UIImage(named: "monday")
    var tuesday = UIImage(named: "tuesday")
    var wednesday = UIImage(named: "wednesday")
    var thursday = UIImage(named: "thurday")
    var friday = UIImage(named: "friday")
    var other = UIImage(named:"other")




    func calendar()->Int{
        let todayDate = NSDate()
        let myCalendar = NSCalendar(calendarIdentifier: NSGregorianCalendar)

        let myComponents = myCalendar?.components(.WeekdayCalendarUnit, fromDate: todayDate)
        let weekDay = myComponents?.weekday
        return weekDay!
    }
    func imageChange() {
        if calendar() == 2 {
            schedule.image = monday
        }

        else if calendar() == 3 {
            schedule.image = tuesday
        }

        else if calendar() == 4 {
            schedule.image = wednesday
        }

        else if calendar() == 5 {
            schedule.image = thursday
        }

        else if calendar() == 6 {
            schedule.image = friday
        }

        else if calendar() == 7 {
            schedule.image = other
        }

        else if calendar() == 1 {
            schedule.image = other
        }

        else {
            schedule.image = other
        }
    }    
}

您可以使您的功能更短、更简单:

//Add all your images to an array(other two times for saturday and sunday)
//0 = saturday, 1 = sunday, 2 = monday etc
var imageArray = [other, other, monday, tuesday, wednesday, thursday, friday]

func imageChange() {
    //Call the function only one time. No need to call it each time you test
    var calendarDay = calendar()

    //You want to know which image you need from your array. -1 because an array starts at 0
    var imageIndex = calendarDay - 1

    schedule.image = imageArray[imageIndex]

}
要调用函数,必须从函数内部执行。不能仅从类主体内运行函数。例如,在viewDidLoad方法中:


我认为您的问题可能存在于以下代码中:

var monday = UIImage(named: "monday")
var tuesday = UIImage(named: "tuesday")
var wednesday = UIImage(named: "wednesday")
var thursday = UIImage(named: "thurday")
var friday = UIImage(named: "friday")
var other = UIImage(named:"other")
您可能需要说明图像的全名。例如,而不是:

var monday = UIImage(named: "monday")
您的代码可能必须是:

1) var monday = UIImage(named: "monday.png")

2) var monday = UIImage(named: "monday.jpg")
或任何其他图像类型。对所有图像执行此操作


希望这能帮助您解决问题。

您不是在调用函数吗?每当我调用函数时,我都会收到一个请求声明的错误。将imageChange放入viewDidLoad中,它就会工作。除此之外,您应该将图像分组到一个数组中,从星期天到星期六,并请求calendar-1的结果,因为数组从索引0开始,所以schedule.image=myImages[calendar-1]。
1) var monday = UIImage(named: "monday.png")

2) var monday = UIImage(named: "monday.jpg")