我正在根据用户的偏好以编程方式添加一些UISteppers和UITextFields。但是,我似乎无法点击UIStepper触摸 - 看起来它没有在 - / +按钮上注册触摸。我尝试将userTriggers UIView的User Interaction设置为disabled,但这不起作用。
1)我还能尝试什么?
2)我还需要能够递增相应的UITextField,然后将其写入我的UserData.plist文件,我不知道如何访问每个字段。我应该将它们添加到某种数组吗?
import UIKit
class TriggersViewController: UIViewController{
@IBOutlet var userTriggers:UIView!
@IBOutlet var saveButton:UIButton!
var triggersList:Array<String>!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
loadTriggers()
var prevInput = 250;
for index in 0..<triggersList.count{
//label for trigger
var label = UILabel(frame: CGRectMake(0, 0, 200, 21))
label.center = CGPointMake(120, CGFloat(prevInput))
label.textAlignment = NSTextAlignment.Left
label.text = triggersList[index]
userTriggers.addSubview(label)
//input box for trigger
var input = UITextField(frame: CGRectMake(0, 0, 50, 21))
input.center = CGPointMake(250, CGFloat(prevInput))
input.text = "0";
//add input to triggersView
userTriggers.addSubview(input);
//UIStepper
var stepper = UIStepper(frame: CGRectMake(0, 0, 50, 21))
stepper.center = CGPointMake(300, CGFloat(prevInput))
stepper.addTarget(self, action: "stepperValueChanged:", forControlEvents: .ValueChanged)
stepper.enabled = true
//add stepper to triggersView
userTriggers.addSubview(stepper);
prevInput += 50 //increment for height
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func stepperValueChanged(sender:UIStepper!){
println("It Works, Value is -->\(Int(sender.value).description)")
}
func loadTriggers(){
var myDict: NSDictionary?
if let path = NSBundle.mainBundle().pathForResource("UserConfigs", ofType: "plist") {
myDict = NSDictionary(contentsOfFile: path)
}
if let dict = myDict {
triggersList = dict["Triggers"] as Array<String>
}
}
}
答案 0 :(得分:2)
您实际上需要在superview上将用户交互设置为启用。有关详细信息,请参阅此处:UIView -- "user interaction enabled" false on parent but true on child?
另外,重新:第二个问题,一个简单(但不太理想)的方式来访问每个字段是使用标签。干净利落的方法是使用枚举定义标签。然后使用viewWithTag
访问字段。
然而,有更好的方式而不是标签(例如,它们不是非常防错,因为任何视图都可以给出任何标签)。如果它只是几个文本字段/步进器,您可以轻松地为每个视图控制器添加属性。最好的解决方案是将步进器和字段组合在一个UIView子类中(假设它们彼此相邻)并在视图控制器中存储对这些分组的引用(可能在数组中)。