苹果开发之Cocoa编程(第三版) 第5章 Target/Action
来源:互联网 发布:专业八字算命软件 编辑:程序博客网 时间:2024/05/18 00:04
1.NSButton、NSSlider、NSTextView、NSColorWell等控件都是NSControl的子类。每个控件都包含target和action。target是一个指向其他对象的指针。action是会发给target的message(selector)。给两个按钮设置的target和action:把Foo对象设置成两个按钮的target,一个按钮的action设置成seed:,另外一个设置成generate:(图5.1)
当用户和控件交互时,就会给它们的target发送action消息。例如,点击一个按钮,将会给它的target发送action消息
action方法接收一个参数:发送者。该参数可以让接收者知道是哪一个控件发送了这个action消息
2.常用的NSControl子类
使用控件前,简单学习一下3个常用用户控件类:NSButton、NSSlider和NSTextField。
第一步:在AppDelegate.h上关联xib指定控件。
第二步:在AppDelegate.m上关联xib指定按钮后调用控件的方法
NSButton:
- (void)setEnabled:(BOOL)yn;//激活按钮。非激活的按钮是灰色的
- (int)state;//如果按钮是on状态,返回NSOnState(1),为off状态时,返回NSOffState(0)
- (void)setState:(int)aState;
第一步:在AppDelegate.h上关联指定按钮。
@property (weak) IBOutlet NSButton *btnX;
第二步:在AppDelegate.m上关联Start按钮后调用下面方法
eg:
- (IBAction)btnStart:(id)sender {
[_btnX setEnabled:NO];
}
a.-(void)setEnabled:(BOOL)yn
[_btnX setEnabled:NO];//NO是非激活的按钮,运行app后点击后变灰色,以后不可以再点击
b.-(int)state
NSLog(@"%ld",(long)[_btnStart state]);//如果是on状态,点击按钮,方法返回NSOnState(1)为1;如果是off状态,点击按钮,方法返回NSOffState(0)为0。对于复选框,可以通过这种方法来检查复选框是否被勾选。
c.-(void)setState:(int)aState
[_btnStart setState:0];//这种方法设置按钮的on和off状态。用来使复选框勾选或不勾选,设置NSOnState为勾选,设置NSOffState为不勾选。
NSSlider:
NSSlider实例对象可以是横向或纵向的。可以设置成当拖动时连续不断地给target发送消息,或者只有当用户松开鼠标时才发送消息。还可以设置滚动条的标尺,把拖动
- (void)setFloatValue:(float)x;//移动滚动条到位置x
- (float)floatValue;//得到当前滚动条的位置
NSTextField:让用户输入单行文本
- (NSString *)stringValue;
- (void)setStringValue:(NSString *)aString;//这两个方法用来获取和设置文本框中的文本
- (NSObject *)objectValue;
- (void)setObjectValue:(NSObject *)obj;//获取和设置文本框内容数据的任意类型的对象
3.通过代码来设置target:
控件的action是一个selector:
- (void)setAction:(SEL):aSelector;
如何获取一个selector?使用Objective-c编译器指令@selector告诉编译器来查找一个selector。例如,要设置一个按钮的action为drawMickey:,可以:
SELmySelector;
mySelector = @selector(drawMickey:);
[myButton setAction:mySelector];
如果要在运行时查找selector,使用NSSelectorFromString()函数:
SELmySelector;
mySelector = NSSelectorFromString(@"drawMickey:");
[myButton setTarget:someObjectWithADrawMickeyMethod];
[myButton setAction:mySelector];
- 苹果开发之Cocoa编程(第三版) 第5章 Target/Action
- 苹果开发之Cocoa编程(原书第4版)
- 第5章 target/action
- iOS 开发之Target-Action
- 苹果 Cocoa 编程规范
- iOS 开发之Target-action模式
- iOS 开发之Target-action模式
- iOS 开发之Target-action模式
- iOS 开发之Target-action模式
- iOS 开发之Target-action模式
- iOS 开发之Target-action模式
- cocoa黏贴板和Nil-Target Action
- [Objective-C] Cocoa's Target-Action Pattern
- 苹果iOS开发深入浅出Cocoa之动态创建类
- 苹果 Cocoa 编程规范 中文版
- 苹果 Cocoa 编程规范 中文版
- 第三方苹果开发库之ASIHTTPRequest(翻译版)
- 第三方苹果开发库之ASIHTTPRequest(翻译版)
- iOS开发 2017申请苹果开发者账号
- 为PHP安装Memcached扩展连接Memcached
- sleep()和wait()的区别
- workspace里面设置的日历,在studio里面为什么加载不出来?
- 响应式开发架构
- 苹果开发之Cocoa编程(第三版) 第5章 Target/Action
- Android中Xml解析实战
- 不常见的事件
- EasyUI获取页面属性
- Android数据传输加密(二):AES加密
- 特征选择之支持向量机递归特征消除(SVM-RFE)
- Mycat从入门到放弃
- huffman编码的实现与详解
- MyBatis返回类型改如何选择?实体类 or Map。