gpt4 book ai didi

ios - 在运行 xcode 8 的 swift 模拟器中查看对象未显示

转载 作者:行者123 更新时间:2023-11-30 13:00:05 24 4
gpt4 key购买 nike

我一直在将 Food Tracker 应用教程作为学习 Swift 的项目。我知道这充满了错误,但我一直在研究正确格式化代码的方法。我进入星级部分,添加了红色按钮,将其分成 5 个按钮,然后添加了星星。星星出现了一段时间,但现在根本没有出现在我的模拟器中。我已经清理了我的代码,断开连接并添加了图像和图像代码,断开连接并添加了我的 IBOutlet 等。它们仍然没有显示,所以我认为我的代码中一定缺少一些东西,因为我是新手。任何帮助将非常感激。

import UIKit

class RatingControl: UIView {
// MARK: Properties

var rating = 0 {
didSet {
setNeedsLayout()
}
}
var ratingButtons = [UIButton]()
var spacing = 5
var stars = 5

// MARK: Initialization

required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)

let filledStar = UIImage(named: "filledStar")
let emptyStar = UIImage(named: "emptyStar")

for _ in 0..<5 {
let button = UIButton()

button.setImage(emptyStar, for: UIControlState())
button.setImage(filledStar, for: .selected)
button.setImage(filledStar, for: [.highlighted, .selected])

button.adjustsImageWhenHighlighted = false

button.addTarget(self, action: #selector(RatingControl.ratingButtonTapped(_:)), for: .touchDown); ratingButtons += [button]
addSubview(button)
}
}

override func layoutSubviews() {
// Set the button's width and height to a square the size of the frame's height.
let buttonSize = Int(frame.size.height)
var buttonFrame = CGRect(x: 0, y: 0, width: buttonSize, height: buttonSize)

// Offset each button's origin by the length of the button plus spacing.
for (index, button) in ratingButtons.enumerated() {
buttonFrame.origin.x = CGFloat(index * (buttonSize + spacing))
button.frame = buttonFrame
}
updateButtonSelectionStates()
}

override var intrinsicContentSize : CGSize {
let buttonSize = Int(frame.size.height)
let width = (buttonSize + spacing) * stars

return CGSize(width: width, height: buttonSize)
}

// MARK: Button Action

func ratingButtonTapped(_ button: UIButton) {
rating = ratingButtons.index(of: button)! + 1

updateButtonSelectionStates()
}

func updateButtonSelectionStates() {
for (index, button) in ratingButtons.enumerated() {
// If the index of a button is less than the rating, that button should be selected.
button.isSelected = index < rating
}
}
}

最佳答案

在你的 init?() 方法中,你错过了向 ratingButtons 数组添加按钮,因此当枚举和访问该数组时什么也没有出现,并且它是空的

请添加以下内容

self.ratingsButton.append(button)

紧接着

addSubview(button)

希望按钮能够开始显示。

关于ios - 在运行 xcode 8 的 swift 模拟器中查看对象未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39948426/

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