UIStepper увеличивает динамическое текстовое поле

В настоящее время я настраиваю трехстраничную форму в Swift с динамически создаваемыми метками, UITextFields и UISteppers. Тем не менее, мне интересно, как динамически увеличивать UITextField, поскольку в каждом примере используется раскадровка, и я делаю это программно. Заранее спасибо за вашу помощь!

           // 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)

РЕДАКТИРОВАТЬ: это похоже на то, как мы добавляем действия к кнопкам? Как создать кнопку программно?


person Samuel Hill    schedule 03.12.2014    source источник


Ответы (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, связанное с этим конкретным степпером.

person markflowers    schedule 03.12.2014
comment
Или вы можете создать подкласс UIView и сохранить в нем степпер и текстовое поле как свойства и подпредставления. - person shim; 05.12.2014