macOS开发 NSSegmentedControl
先看效果
直接复制代码运行
#import "ViewController.h" @interface ViewController () ///分段控制器 @property (nonatomic, strong) NSSegmentedControl *MenuViewSegment; @end @implementation ViewController #pragma mark 懒加载 - (NSSegmentedControl*)MenuViewSegment{ if(!_MenuViewSegment){ // _MenuViewSegment = [[NSSegmentedControl alloc] init]; // [self.view addSubview:self.MenuViewSegment]; NSSegmentedControl *lbl = [[NSSegmentedControl alloc] init]; [self.view addSubview:lbl]; _MenuViewSegment = lbl; } return _MenuViewSegment; } -(void)viewDidLoad { [super viewDidLoad]; _MenuViewSegment.frame = NSMakeRect(100, 100, 200, 100); _MenuViewSegment.segmentCount = 3;//Segment数量 [_MenuViewSegment setLabel:@"一" forSegment:0];//显示文字和下标位置 [_MenuViewSegment setImage:[NSImage imageNamed:NSImageNameUser] forSegment:1];//显示图片和下标位置 [_MenuViewSegment setImageScaling:NSImageScaleProportionallyDown forSegment:1]; NSMenu *subMenu = [[NSMenu alloc] init]; //常规添加菜单 [subMenu insertItemWithTitle:@"Item 1"action:@selector(beep:)keyEquivalent:@""atIndex:0]; [subMenu insertItemWithTitle:@"Item 2"action:@selector(beep:)keyEquivalent:@""atIndex:1]; [_MenuViewSegment setLabel:@"Item 1" forSegment:2]; [_MenuViewSegment setMenu:subMenu forSegment:2];//显示菜单和下标位置 [_MenuViewSegment setWidth:100 forSegment:2];//设置下标的宽度 //[_MenuViewSegment setAction:@selector(segmentControlChange:)];//Segment各个项目菜单点击方法,NSMenuItem的beep:会冲突 } #pragma mark 统一使用响应方法,不然不使用该方法的菜单栏将不能点击 -(void)beep:(NSMenuItem *)menuItem{ NSLog(@"_____%@", menuItem); [self.MenuViewSegment setLabel:menuItem.title forSegment:2]; } #pragma mark Segment各个项目菜单点击方法响应方法,和NSMenuItem会冲突 - (void)segmentControlChange:(NSSegmentedControl *)segControl{ NSLog(@"tag : %ld , selectedSegment : %ld",segControl.tag,segControl.selectedSegment); }