关闭

MacOS 开发 - NSComboBox

标签: NSComboBoxMacOS开发
2243人阅读 评论(1) 收藏 举报
分类:


定义

NSComboBox 继承自 NSTextField(所以有 backgroundColor 属性)。


创建

- (void)addComboBox{

    NSComboBox *box = [[NSComboBox alloc]init];

    //下面两者只对 box 内容有效
    box.frame = NSMakeRect(100, 100, 100, 25); 
    box.backgroundColor = [NSColor yellowColor];

    box.numberOfVisibleItems = 2; //下拉可视2行,其他选项可滑动查看

    //初始化数据
    self.datas = @[
                   @"羊肉泡馍",
                   @"油泼扯面",
                   @"板栗烧鸡",
                   @"豆腐花",
                   ];

    [self.window.contentView addSubview:box];
}

不使用数据源方法

1、如下设置数据
[box addItemsWithObjectValues:self.datas];

2、可以设置默认选中干的数据:
[box selectItemAtIndex:2]; //默认选中第二个,box的 内容 也会变成第二个。

3、没法监听选择了什么
即使使用 [box setAction:@selector(selectionChaned:)];

- (void)selectionChaned:(id)sender {

    NSComboBox *comboBox = sender;

    NSInteger selectedIndex = comboBox.indexOfSelectedItem;

    NSString *selectedContent = comboBox.stringValue;

    NSLog(@"selectedContent %@ at index %ld",selectedContent,selectedIndex);
}

使用数据源和代理

1、添加

    box.usesDataSource = YES;
    box.delegate = self;
    box.dataSource = self;

3、实现数据源和代理方法


#pragma mark - NSComboBoxDataSource

- (NSInteger)numberOfItemsInComboBox:(NSComboBox *)aComboBox {

    return [self.datas count];
}

- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)index {

    return self.datas[index];
}


#pragma mark - NSComboBoxDelegate

- (void)comboBoxSelectionDidChange:(NSNotification *)notification {


    NSComboBox *comboBox = notification.object;
    NSInteger selectedIndex = comboBox.indexOfSelectedItem;

    NSLog(@"comboBoxSelectionDidChange selected item %@",self.datas[selectedIndex]);
}
- (void)comboBoxSelectionIsChanging:(NSNotification *)notification {

    NSComboBox *comboBox = notification.object;
    NSInteger selectedIndex = comboBox.indexOfSelectedItem;

    NSLog(@"comboBoxSelectionIsChanging selected item %@",self.datas[selectedIndex]);
}

输入

NSComboBox 继承自 NSTextField,所以如果你可以往里面输入东西,需要监听输入的话,可以添加 NSTextFieldDelegate。并添加代理方法:

-(void)controlTextDidChange:(NSNotification*)notification
{
    id object = [notification object];
    NSLog(@"notification : %@",notification);
}

参考资料:
- NSComboBox输入字符时自动打开下拉菜单并匹配:
http://www.jianshu.com/p/624ee153c893

1
0
查看评论

NSComboBox 使用方法

功能:1.给combobox填充值 2.选中comb
  • u013317006
  • u013317006
  • 2014-05-26 18:44
  • 3055

NSComboBox输入字符时自动打开下拉菜单并匹配

NSComboBox,此功能实现的效果图如下图所示: 1.      首先调用NSComboBox的父类NSTextField的delegate方法,实现实时输入监测。其中比较关键的方法是-(void)controlTextDidCha...
  • jiaoguifeng
  • jiaoguifeng
  • 2012-12-23 11:39
  • 2251

Label,Text Field和Combo Box来处理文本

一.使用Text Fieldtext field可以接受字符串和数字,可以通过下面的属性来获取值: intValue:如果是字符串,则为0,如果浮点数,则去掉小数部分 floatValue或doubleValue:如果是字符串,则为0.0 stringValue: 除了标准的text field,X...
  • WflytoC
  • WflytoC
  • 2015-11-16 22:46
  • 655

Mac编程之用户界面

Xcode提供两种方式来保存用户界面: .xib文件 .storyboard文件 一个.xib文件通常包含一个单独的窗口(window)或者用户界面上的一个视图(view)。.storyboard文件包含一个或多个视图或者segues,这里的视图代表一个窗口,segue定义了视图间的转场。用户界面有...
  • WflytoC
  • WflytoC
  • 2015-11-15 22:14
  • 1379

MacOS 开发入门

引言 相关书籍 剑指人心的书 Cocoa入门使用Objective-C 视频教程 我的开发笔记CSDN 博客目录 基础控件 DockWindow状态栏目录栏 文件管理等 视图效果 小功能 综合 我的MacOS 开发简书文集 实用Demo 优秀MacOS 开发博客 QQ群 参考资料 ...
  • lovechris00
  • lovechris00
  • 2017-05-27 10:24
  • 5347

MacOS 开发 - NSComboBox

定义 创建 不使用数据源方法 使用数据源和代理定义NSComboBox 继承自 NSTextField(所以有 backgroundColor 属性)。创建- (void)addComboBox{ NSComboBox *box = [[NSComboBox alloc]init]; /...
  • lovechris00
  • lovechris00
  • 2017-09-14 23:50
  • 2243

最详尽OC函数库方法翻译

(转自百度百科):http://baike.baidu.com/link?url=AXQPPxq-m4s72cJ3rt5XNHluNB8zqG-_zF-wVHxC9SDA8xvmkzvBc3q-AzMwZv-Ol1bCK23dtuhkaqkLXtbTDq 2.1 算术运算函数    ...
  • chenyangsimida
  • chenyangsimida
  • 2016-12-12 14:37
  • 601

macOS 控件教程(1)

原文:macOS Controls Tutorial: Part 1/2 作者:Ernesto García 译者:kmyhy 更新说明:本教程由 Ernesto García 升级为 Xcode 8.2 / Swift 3 。上一版本由 Michael Brisco...
  • kmyhy
  • kmyhy
  • 2017-05-05 09:01
  • 1583

macOS 开发入门教程: Part 1

原文:macOS Development for Beginners: Part 1 作者:Sarah Reichelt 译者:kmyhy 你想开发自己的的 macOS App 吗?好消息!苹果让 macOS 开发变得超级简单,这个系列教程会教你如何进行 macOS App。你将学习如何...
  • kmyhy
  • kmyhy
  • 2017-06-22 09:01
  • 1903

最详尽OC 函数库方法翻译

(转自百度百科):http://baike.baidu.com/link?url=AXQPPxq-m4s72cJ3rt5XNHluNB8zqG-_zF-wVHxC9SDA8xvmkzvBc3q-AzMwZv-Ol1bCK23dtuhkaqkLXtbTDq 2.1 算术运算函数    2....
  • Jason_chen13
  • Jason_chen13
  • 2015-12-09 12:25
  • 1595
    博客专栏
    个人资料
    • 访问:210174次
    • 积分:3453
    • 等级:
    • 排名:第11457名
    • 原创:127篇
    • 转载:6篇
    • 译文:1篇
    • 评论:96条
    最新评论