iOS开发:App启动时如何让UILabel显示UIStepper的value而非minimumValue?
问题
我有一个UIStepper,参数设置如下:
- value: 40
- minimumValue: 35
- maximumValue: 45
我希望App启动时,关联的UILabel能显示这个value值(40),但目前默认显示的是minimumValue(35)。相关实现情况:
- 已在文件中声明了UIStepper和UILabel的IBOutlets
- 已编写
showSizeValue()函数,并在viewDidLoad()中调用它来初始化UI显示 - UIStepper更新时也会调用该函数
以下是我的ViewController.swift代码:
import UIKit class ViewController: UIViewController { @IBOutlet weak var sizeLbl: UILabel! @IBOutlet weak var sizeStepper: UIStepper! var size: String = "" override func viewDidLoad() { super.viewDidLoad() // Sets the first UI's display showSizeValue() } // Updates in real time the shoe size displayed on screen func showSizeValue() { sizeLbl.text = String(Int(sizeStepper.value)) size = sizeLbl.text ?? "" updateShoeImage() } // Stepper pressed @IBAction func sizeChanged(_ sender: UIStepper) { showSizeValue() updateShoeImage() // Update the shoe image if size is pressed updateOrderResult() // Update order result's message when size is pressed } }
解决方案
问题根源是Storyboard/XIB中UIStepper的初始值未正确同步到运行时,或者viewDidLoad执行时,stepper的value还未加载界面设置的数值。
你可以通过两种方式解决:
方法一:确认界面文件中的UIStepper设置
打开对应的Storyboard/XIB文件,选中UIStepper控件,在右侧Attributes Inspector面板中:
- 确认
Value字段设置为40 - 检查
Minimum和Maximum分别为35和45 - 重新保存项目后运行,确保界面设置生效
方法二:在代码中强制初始化UIStepper参数
在viewDidLoad调用showSizeValue()之前,手动设置stepper的参数,避免界面设置失效的问题:
override func viewDidLoad() { super.viewDidLoad() // 手动初始化stepper参数 sizeStepper.minimumValue = 35 sizeStepper.maximumValue = 45 sizeStepper.value = 40 showSizeValue() }
这样无论界面文件的设置是否生效,代码都会强制将stepper初始值设为40,保证启动时Label显示正确。
内容的提问来源于stack exchange,提问作者dorianDevTech
相关产品推荐
相关产品推荐

