oc之mac中- NSStepper

2017年09月17日

https://blog.csdn.net/lovechris00/article/details/78007786

简介
创建和使用
尺寸
常见的递增输入,其实是一个 NSTextField 和 NSStepper 组合使用:

NSStepper 

简介

stepper 是一个很简单的控件,以至于定义只有这么多:

 

创建和使用

- (void)addStepper{

NSStepper *stepper = [[NSStepper alloc] initWithFrame:NSMakeRect(100, 100, 100, 100)];

[self.window.contentView addSubview:stepper];

stepper.wantsLayer = YES;
stepper.layer.backgroundColor = [NSColor cyanColor].CGColor;

stepper.minValue = 5;
stepper.maxValue = 10;

stepper.increment = 0.2; //步增值

stepper.valueWraps = NO; //循环,YES - 超过最小值,回到最大值;超过最大值,来到最小值。

stepper.continuous = NO; //默认为YES-用户交互时会立即放松ValueChanged事件,NO 则表示只有等用户交互结束时才放松ValueChanged事件
stepper.autorepeat = YES; //默认为 YES-按住加号或减号不松手,数字会持续变化.continuous = NO 时才有意义。

[stepper setAction:@selector(stepperAction:)];

}

- (void)stepperAction:(id)sender
{
int theValue = [sender intValue];
float fValue = [sender floatValue];

NSLog(@"value : %d , %f",theValue,fValue);

[self.pageSizeTextField setIntValue:theValue];

}

尺寸

NSStepper 尺寸

如你所见,无论给他设置frame多大,都只显示这么大。
需要大尺寸的 Stepper 的童鞋,可以用两个 button 来自定义。


---------------------

原文:https://blog.csdn.net/lovechris00/article/details/78007786

 

 

NSStepper & NSTextField Bindings

 

2017.04.21 18:01* 字数 252 阅读 156评论 0喜欢 0

Cocoa 开发中更多地运用对象绑定的概念。这是一个 NSStepper 和 NSTextField 绑定的例子。

Model

创建 StepperModel.swift,视图组件的 model key path 将引用 model 中定义的变量名。

class StepperModel: NSObject {

    var stepperValue: Int = 0

}

ObjectController

创建 StepperContrller.swift,两个视图组建将绑定这个 Controller。

Bindings

1. ObjectController 绑定 Object

  • MainStoryboard 中拖入 Object 和 ObjectController 两个对象。
  • Identity Inspector 中设置它们的父类分别为 StepperModel 和 StepperController
  • 选择 ObjectController,Bindings Inspector 中,Controller Content > Bind to Stepper Model, Model Key Path 默认为 self

2. 视图组件绑定 Controller

  • MainStoryboard 中拖入 Stepper 和 TextField 组件。
  • Bindings Inspector 中,Stepper > Value > Bind to > Stepper Controller, Model Key Path 设为 stepperValue,与 model 中定义的变量名一致
  • TextField 做同样绑定,这样两个组件通过 ObjectController 绑定到同一个值上

格式化

通常 NumberFormatter 也可以在 Inspector 中设置,但是整型格式需要自己定义,避免输入非整型数据。

    class stepperNumberFormatter: NumberFormatter {

        override func isPartialStringValid(_ partialString: String, newEditingString newString: AutoreleasingUnsafeMutablePointer<NSString?>?, errorDescription error: AutoreleasingUnsafeMutablePointer<NSString?>?) -> Bool {

            if partialString.isEmpty {

                return true

            }

            return Int(partialString) != nil

        }

    }

viewDidLoad() 中赋给 textField

textField.formatter = stepperNumberFormatter()

GitHub

参考 YOUTUBE

posted @ 2019-01-30 15:52  sundaysmac  阅读(457)  评论(0编辑  收藏  举报