import UIKit
class ViewController: UIViewController {
@IBOutlet weak var nameLabel: UILabel!
@IBOutlet weak var chargeLabel: UILabel!
@IBOutlet weak var bigDogLabel: UILabel!
@IBOutlet weak var cafeImageView: UIImageView!
override func viewDidLoad() {
}
struct DogCafe{
var name: String
var charge: Int
var bigDog: Bool
var cafeImage: UIImage
init(name: String, charge: Int, bigDog: Bool, cafeImage: UIImage) {
self.name = name
self.charge = charge
self.cafeImage = cafeImage
self.bigDog = bigDog
}
func message() {
nameLabel.text = "?? \(name) ???"
chargeLabel.text = "???? \(charge) ???"
cafeImageView.image = cafeImage
if bigDog == true {
bigDogLabel.text = "??? ??? ??? ?????"
} else {
bigDogLabel.text = "??? ??? ???? ?????"
}
}
}
@IBAction func ohdodokButton(_ sender: UIButton) {
let dogCafe = DogCafe(name: "?? ???", charge: 3500, bigDog: true, cafeImage: #imageLiteral(resourceName: "ohdodok"))
dogCafe.message()
}
@IBAction func meltingButton(_ sender: UIButton) {
let dogCafe2 = DogCafe(name: "??", charge: 5000, bigDog: false, cafeImage: #imageLiteral(resourceName: "melting"))
dogCafe2.message()
}
}
func message() {
nameLabel.text = "?? \(name) ???"
chargeLabel.text = "???? \(charge) ???"
cafeImageView.image = cafeImage
if bigDog == true {
bigDogLabel.text = "??? ??? ??? ?????"
} else {
bigDogLabel.text = "??? ??? ???? ?????"
}
“ViewController”型別的實體成員“nameLabel”不能用于嵌套型別“ViewController.DogCafe”的實體
“ViewController”型別的實體成員“chargeLabel”不能用于嵌套型別“ViewController.DogCafe”的實體
“ViewController”型別的實體成員“cafeImageView”不能用于嵌套型別“ViewController.DogCafe”的實體
“ViewController”型別的實體成員“bigDogLabel”不能用于嵌套型別“ViewController.DogCafe”的實體
uj5u.com熱心網友回復:
你可以像下面這樣使用
@IBAction func ohdodokButton(_ sender: UIButton) {
let dogCafe = DogCafe(name: "?? ???", charge: 3500, bigDog: true, cafeImage: #imageLiteral(resourceName: "ohdodok"))
setCurrentDogAttributes(currentDog: dogCafe)
}
@IBAction func meltingButton(_ sender: UIButton) {
let dogCafe2 = DogCafe(name: "??", charge: 5000, bigDog: false, cafeImage: #imageLiteral(resourceName: "melting"))
setCurrentDogAttributes(currentDog: dogCafe)
}
func setCurrentDogAttributes(currentDog:DogCafe){
nameLabel.text=currentDog.name
//Set your Values Here
}
uj5u.com熱心網友回復:
你的做法是錯誤的。您需要閱讀關注點分離。我還建議閱讀 MVC(模型視圖控制器)設計模式,這是在 iOS 上進行開發的一種非常常見的方法。
在您的代碼中,DogCafe 是一個模型物件。它包含您希望應用程式操作和顯示的資料。
模型物件不應該知道它是如何被使用的。它只保存資料。
您的視圖控制器應該獲取模型物件并將其顯示到其視圖中。一種處理display(cafe:)方法是向視圖控制器添加一個方法:
class ViewController: UIViewController {
// The rest of your view controller variables and functions would go here...
func display(cafe: DogCafe) {
nameLabel.text = "?? \(cafe.name) ???"
chargeLabel.text = "???? \(cafe.charge) ???"
cafeImageView.image = cafe.cafeImage
if cafe.bigDog == true {
bigDogLabel.text = "??? ??? ??? ?????"
} else {
bigDogLabel.text = "??? ??? ???? ?????"
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/361695.html
