OS X开发:下拉菜单按钮NSPopUpButton应用

简介: OS X开发:下拉菜单按钮NSPopUpButton应用

NSPopUpButton是一个下拉按钮,当用户点击时,其会弹出一个下拉选择菜单。一个简单的示例如下:


- (void)viewDidLoad {

   [super viewDidLoad];

   NSPopUpButton * popUpButton = [[NSPopUpButton alloc]initWithFrame:CGRectMake(100, 400, 200, 300)];

   //设置弹出菜单

   NSMenu * menu = [[NSMenu alloc]initWithTitle:@"menu"];

   [menu insertItemWithTitle:@"one" action:@selector(null) keyEquivalent:@"" atIndex:0];

   [menu addItemWithTitle:@"two" action:@selector(null) keyEquivalent:@""];

   popUpButton.menu = menu;

   //设置弹出菜单的位置

   popUpButton.preferredEdge = NSRectEdgeMaxX;

   [self.view addSubview:popUpButton];

}

效果如下图所示:


image.png


NSPopUpButton继承与NSButton,因此NSButton添加触发事件的方式在NSPopUpButton中依然使用,NSPopUpButton类中属性和方法解析如下:


//初始化方法 flag参数决定是下拉菜单模式还是弹出菜单模式

- (instancetype)initWithFrame:(NSRect)buttonFrame pullsDown:(BOOL)flag;

//设置下拉菜单

@property (nullable, strong) NSMenu *menu;

//设置当交互事件发生时,是否禁用选项

@property BOOL autoenablesItems;

//风格设置是否为下拉菜单

@property BOOL pullsDown;

//设置菜单弹出的优先位置

@property NSRectEdge preferredEdge;


//列表按钮相关

//添加一个按钮

- (void)addItemsWithTitles:(NSArray<NSString *> *)itemTitles;

//插入一个按钮

- (void)insertItemWithTitle:(NSString *)title atIndex:(NSInteger)index;

//通过标题移除一个按钮

- (void)removeItemWithTitle:(NSString *)title;

//通过索引移除按钮

- (void)removeItemAtIndex:(NSInteger)index;

//移除所有按钮

- (void)removeAllItems;

//所有列表选项按钮数组

@property (readonly, copy) NSArray<NSMenuItem *> *itemArray;

//按钮个数

@property (readonly) NSInteger numberOfItems;

//获取按钮索引的方法

- (NSInteger)indexOfItem:(NSMenuItem *)item;

- (NSInteger)indexOfItemWithTitle:(NSString *)title;

- (NSInteger)indexOfItemWithTag:(NSInteger)tag;

- (NSInteger)indexOfItemWithRepresentedObject:(nullable id)obj;

- (NSInteger)indexOfItemWithTarget:(nullable id)target andAction:(nullable SEL)actionSelector;

//获取按钮的方法

- (nullable NSMenuItem *)itemAtIndex:(NSInteger)index;

- (nullable NSMenuItem *)itemWithTitle:(NSString *)title;

//获取最后一个按钮

@property (nullable, readonly, strong) NSMenuItem *lastItem;

//选择某个按钮的方法

- (void)selectItem:(nullable NSMenuItem *)item;

- (void)selectItemAtIndex:(NSInteger)index;

- (void)selectItemWithTitle:(NSString *)title;

- (BOOL)selectItemWithTag:(NSInteger)tag;

- (void)setTitle:(NSString *)string;

//获取选中的按钮

@property (nullable, readonly, strong) NSMenuItem *selectedItem;

//获取已经选中的按钮索引

@property (readonly) NSInteger indexOfSelectedItem;

//获取已经选中的按钮tag

@property (readonly) NSInteger selectedTag;

//将选中的标题显示进行同步

- (void)synchronizeTitleAndSelectedItem;


//获取某个索引按钮的标题

- (NSString *)itemTitleAtIndex:(NSInteger)index;

//获取按钮标题数组

@property (readonly, copy) NSArray<NSString *> *itemTitles;

//获取选中的按钮标题

@property (nullable, readonly, copy) NSString *titleOfSelectedItem;

//当下拉菜单弹出时发送的通知

APPKIT_EXTERN NSNotificationName NSPopUpButtonWillPopUpNotification;

目录
相关文章
|
8月前
|
人工智能 搜索推荐 API
🚀 2小时极速开发!基于DeepSeek+智体OS的AI社交「头榜」震撼上线!
基于DeepSeek大模型与DTNS协议的革命性AI社交平台「头榜」震撼上线!仅需2小时极速开发,即可构建完整社交功能模块。平台具备智能社交网络、AI Agent生态、Prompt市场、AIGC创作等六大核心优势,支持低代码部署与个性化定制。开发者可快速接入DeepSeek API,体验去中心化架构与数据自主权。官网:[dtns.top](https://dtns.top),立即开启你的AI社交帝国!#AI社交 #DeepSeek #DTNS协议
267 4
|
11月前
|
存储 人工智能 JavaScript
Harmony OS开发-ArkTS三
本文介绍了ArkTS的基础语法,包括常量、命名规则、数组及其常用函数,以及函数的定义与使用,涵盖匿名函数和箭头函数的区别。通过具体示例,帮助读者快速掌握ArkTS编程技巧,踏上Harmony OS开发之旅。君志所向,一往无前!
637 1
Harmony OS开发-ArkTS三
|
存储 人工智能 JavaScript
Harmony OS开发-ArkTS语言速成二
本文介绍了ArkTS基础语法,包括三种基本数据类型(string、number、boolean)和变量的使用。重点讲解了let、const和var的区别,涵盖作用域、变量提升、重新赋值及初始化等方面。期待与你共同进步!
569 47
Harmony OS开发-ArkTS语言速成二
|
9月前
|
人工智能 安全 Anolis
|
11月前
|
存储 人工智能 编译器
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
708 10
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
|
11月前
|
前端开发 JavaScript 开发工具
【04】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-正确安装鸿蒙SDK-结构目录介绍-路由介绍-帧动画(ohos.animator)书写介绍-能够正常使用依赖库等-ArkUI基础组件介绍-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
【04】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-正确安装鸿蒙SDK-结构目录介绍-路由介绍-帧动画(ohos.animator)书写介绍-能够正常使用依赖库等-ArkUI基础组件介绍-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
690 5
【04】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-正确安装鸿蒙SDK-结构目录介绍-路由介绍-帧动画(ohos.animator)书写介绍-能够正常使用依赖库等-ArkUI基础组件介绍-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
|
11月前
|
安全 前端开发 开发工具
【01】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-优雅草卓伊凡拟开发一个一站式家政服务平台-前期筹备-暂定取名斑马家政软件系统-本项目前端开源-服务端采用优雅草蜻蜓Z系统-搭配ruoyi框架admin后台-全过程实战项目分享-从零开发到上线
【01】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-优雅草卓伊凡拟开发一个一站式家政服务平台-前期筹备-暂定取名斑马家政软件系统-本项目前端开源-服务端采用优雅草蜻蜓Z系统-搭配ruoyi框架admin后台-全过程实战项目分享-从零开发到上线
530 5
【01】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-优雅草卓伊凡拟开发一个一站式家政服务平台-前期筹备-暂定取名斑马家政软件系统-本项目前端开源-服务端采用优雅草蜻蜓Z系统-搭配ruoyi框架admin后台-全过程实战项目分享-从零开发到上线
|
11月前
|
JavaScript 编译器 开发工具
【02】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-准备工具安装-编译器DevEco Studio安装-arkts编程语言认识-编译器devco-鸿蒙SDK安装-模拟器环境调试-hyper虚拟化开启-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
【02】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-准备工具安装-编译器DevEco Studio安装-arkts编程语言认识-编译器devco-鸿蒙SDK安装-模拟器环境调试-hyper虚拟化开启-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
585 2
【02】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-准备工具安装-编译器DevEco Studio安装-arkts编程语言认识-编译器devco-鸿蒙SDK安装-模拟器环境调试-hyper虚拟化开启-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
|
11月前
|
中间件 关系型数据库 数据库
docker快速部署OS web中间件 数据库 编程应用
通过Docker,可以轻松地部署操作系统、Web中间件、数据库和编程应用。本文详细介绍了使用Docker部署这些组件的基本步骤和命令,展示了如何通过Docker Compose编排多容器应用。希望本文能帮助开发者更高效地使用Docker进行应用部署和管理。
333 19
|
开发框架 JavaScript 前端开发
Harmony OS开发-ArkT语言速成一
本文介绍ArkTS语言,它是鸿蒙生态的应用开发语言,基于TypeScript,具有静态类型检查、声明式UI、组件化架构、响应式编程等特性,支持跨平台开发和高效性能优化。ArkTS通过强化静态检查和分析,提升代码健壮性和运行性能,适用于Web、移动端和桌面端应用开发。关注我,带你轻松掌握HarmonyOS开发。
573 5
Harmony OS开发-ArkT语言速成一

推荐镜像

更多