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;

目录
相关文章
|
23天前
|
安全 搜索推荐 Android开发
移动应用与系统:探索开发趋势与操作系统优化策略####
当今数字化时代,移动应用已成为日常生活不可或缺的一部分,而移动操作系统则是支撑这些应用运行的基石。本文旨在探讨当前移动应用开发的最新趋势,分析主流移动操作系统的特点及优化策略,为开发者提供有价值的参考。通过深入剖析技术创新、市场动态与用户需求变化,本文力求揭示移动应用与系统协同发展的内在逻辑,助力行业持续进步。 ####
41 9
|
7天前
|
移动开发 前端开发 Android开发
探索移动开发之旅:从应用构思到操作系统的深度理解
在数字时代的浪潮中,移动应用与系统是连接用户与技术的桥梁。本文将带领读者踏上一场移动开发的探险旅程,从应用的构思和设计出发,深入到移动操作系统的核心原理。我们将通过实际代码示例,展示如何将创意转化为现实,并解析背后的技术机制。无论你是初学者还是有经验的开发者,这篇文章都将为你提供新的视角和知识,帮助你更好地理解和掌握移动应用开发的艺术。
|
7天前
|
安全 前端开发 Android开发
探索移动应用与系统:从开发到操作系统的深度解析
在数字化时代的浪潮中,移动应用和操作系统成为了我们日常生活的重要组成部分。本文将深入探讨移动应用的开发流程、关键技术和最佳实践,同时分析移动操作系统的核心功能、架构和安全性。通过实际案例和代码示例,我们将揭示如何构建高效、安全且用户友好的移动应用,并理解不同操作系统之间的差异及其对应用开发的影响。无论你是开发者还是对移动技术感兴趣的读者,这篇文章都将为你提供宝贵的见解和知识。
|
8天前
|
人工智能 搜索推荐 Android开发
移动应用与系统:探索开发趋势与操作系统演进####
本文深入剖析了移动应用开发的最新趋势与移动操作系统的演进历程,揭示了技术创新如何不断推动移动互联网生态的变革。通过对比分析不同操作系统的特性及其对应用开发的影响,本文旨在为开发者提供洞察未来技术方向的视角,同时探讨在多样化操作系统环境中实现高效开发的策略。 ####
11 0
|
9天前
|
开发框架 .NET PHP
网站应用项目如何选择阿里云服务器实例规格+内存+CPU+带宽+操作系统等配置
对于使用阿里云服务器的搭建网站的用户来说,面对众多可选的实例规格和配置选项,我们应该如何做出最佳选择,以最大化业务效益并控制成本,成为大家比较关注的问题,如果实例、内存、CPU、带宽等配置选择不合适,可能会影响到自己业务在云服务器上的计算性能及后期运营状况,本文将详细解析企业在搭建网站应用项目时选购阿里云服务器应考虑的一些因素,以供参考。
|
19天前
|
API 数据处理 C语言
探索操作系统:从基础概念到实际应用
本文将带你进入操作系统的世界,了解它的基本概念、发展历程和应用场景。我们将一起探讨操作系统的核心功能、体系结构以及它在计算机系统中的重要作用。同时,我们还将介绍一些常见的操作系统类型,并分析它们的特点。最后,通过一个简单的代码示例,展示操作系统在实际应用中的重要作用。让我们一起揭开操作系统的神秘面纱,探索它的奥秘吧!
|
25天前
|
人工智能 Android开发 数据安全/隐私保护
移动应用与系统:探索开发趋势与操作系统的协同进化####
当今时代,移动应用不再仅仅是简单的软件工具,它们已成为扩展智能手机及平板等设备功能的关键。本文旨在深入分析当前移动应用的开发趋势,探讨移动操作系统的最新进展及其对应用开发的影响,并阐述两者如何相互促进、协同进化,共同推动移动互联网技术向前发展。 ####
|
1月前
|
人工智能 物联网 Android开发
移动应用与系统:探索开发趋势与操作系统的协同进化####
本文深入探讨了移动应用开发的当前趋势,以及这些趋势如何与移动操作系统的发展相互影响、协同进化。通过分析最新的技术动态、市场数据及用户行为变化,本文旨在为开发者提供关于未来移动应用开发方向的洞察,并讨论操作系统层面的创新如何促进或制约应用的发展。 ####
|
7天前
|
5G 数据安全/隐私保护 Android开发
移动应用与系统:探索开发趋势与操作系统革新####
本文深入剖析当前移动应用开发的最新趋势,涵盖跨平台开发框架的兴起、人工智能技术的融合、5G技术对移动应用的影响,以及即时应用的发展现状。随后,文章将探讨主流移动操作系统的最新特性及其对开发者社区的影响,包括Android的持续进化、iOS的创新举措及华为鸿蒙OS的崛起。最后,还将讨论移动应用开发中面临的挑战与未来的发展机遇,为读者提供全面而深入的行业洞察。 ####
|
1月前
|
安全 物联网 Android开发
移动应用与系统:探索开发趋势与操作系统的演进####
【10月更文挑战第29天】 本文深入探讨了移动应用开发的最新趋势与挑战,并分析了主流移动操作系统(如Android、iOS)的发展动态。通过对比不同系统的技术特点和市场表现,揭示了移动应用生态系统的复杂性及其对开发者的影响。此外,还讨论了跨平台开发工具的兴起如何改变应用开发流程,以及这些变化对未来移动计算领域的潜在影响。 ####
35 4