2014-12-03 35 views
0

我目前正在使用動態創建的標籤,UITextFields和UISteppers在Swift中設置三頁表單。但是,我不知道如何動態地增加UITextField,因爲每個示例都使用故事板,而我正在以編程方式進行。在此先感謝您的幫助!UIStepper增量動態文本框

  // read triggers configs 
     let triggers = dict["Triggers"] as Array<String> 

     //add list of triggers to view 
     var triggersView = UIView(frame: frame) 
     var prevInput = 150; 
     for index in 0..<triggers.count{ 
      //title for triggers page 
      var title = UILabel(frame: CGRectMake(0, 0, 300, 50)) 
      title.center = CGPointMake(200, 60) 
      title.font = UIFont(name: title.font.fontName, size: 28) 
      title.text = "Triggers" 
      triggersView.addSubview(title) 

      //label for trigger 
      var label = UILabel(frame: CGRectMake(0, 0, 200, 21)) 
      label.center = CGPointMake(160, CGFloat(prevInput)) 

      label.textAlignment = NSTextAlignment.Left 
      label.text = triggers[index] 
      triggersView.addSubview(label) 

      //input box for trigger 
      var input = UITextField(frame: CGRectMake(0, 0, 50, 21)) 
      input.center = CGPointMake(300, CGFloat(prevInput)) 
      input.text = "0"; 
      triggersView.addSubview(input); 

      //UIStepper 
      var stepper = UIStepper(frame: CGRectMake(0, 0, 50, 21)) 
      stepper.center = CGPointMake(350, CGFloat(prevInput)) 
      stepper. 
      triggersView.addSubview(stepper); 

      prevInput += 75 //increment for height 

     } 
     self.scrollView.addSubview(triggersView) 

編輯:它是類似於我們如何將操作添加到按鈕? How to create a button programmatically?

回答

1

由於UIStepper是UIControl的子類,因此您可以使用addTarget(_:action:forControlEvents:)來設置要執行的操作。控制事件應該是UIControlEvents.ValueChanged以正確觸發操作。

https://developer.apple.com/LIBRARY/IOS/documentation/UIKit/Reference/UIControl_Class/index.html#//apple_ref/occ/instm/UIControl/addTarget:action:forControlEvents

除此之外,你需要一些方法來涉及的UIStepper到與它相關的相關的UITextField。因此,您需要將UITextFields和UISteppers作爲元組存儲在某種數組中,或者您可以對UIStepper進行子類化並將屬性添加到與該特定步進器關聯的UITextField中。

+0

或者您可以繼承UIView並將步進器和文本框存儲爲屬性和子視圖。 – shim 2014-12-04 21:31:23