How to add segmented control in uitoolbar

I have a UIToolbar with UIBarButtonItems. I want to add a segmented control to it.

//Add UIToolbar toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 425, 320, 35)]; toolbar.barStyle = UIBarStyleBlackOpaque; [self.view addSubview:toolbar]; //Add Gallery Button UIButton *galleryButton = [UIButton buttonWithType:UIButtonTypeCustom]; [galleryButton addTarget:self action:@selector(ScrollView:) forControlEvents:UIControlEventTouchUpInside]; galleryButton.frame = CGRectMake(0, 0, 25, 25); UIImage *ime = [UIImage imageNamed:@"_gallery.png"]; [galleryButton setImage:ime forState:UIControlStateNormal]; UIBarButtonItem *gallerybutton = [[UIBarButtonItem alloc] initWithCustomView:galleryButton]; //Add play/Pause button _playButton = [UIButton buttonWithType:UIButtonTypeCustom]; [_playButton addTarget:self action:@selector(playpauseAction:) forControlEvents:UIControlEventTouchUpInside]; _playButton.frame = CGRectMake(0, 0, 25, 25); [_playButton setImage:[UIImage imageNamed:@"1play.png"] forState:UIControlStateNormal]; [_playButton setImage:[UIImage imageNamed:@"audiopause.png"] forState:UIControlStateSelected]; UIBarButtonItem *play = [[UIBarButtonItem alloc] initWithCustomView:self.playButton]; UIBarButtonItem *flexItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; //Add buttons to the array NSArray *toolbarItems = [NSArray arrayWithObjects: play, flexItem, gallerybutton, nil]; [toolbar setItems:toolbarItems]; 

Is there a way to add a segmented control to existing uibarbuttonitems on a UIToolbar.

+4
source share
3 answers

Use this code:

 NSArray *segItemsArray = [NSArray arrayWithObjects: @"Play", @"Pause", nil]; UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:segItemsArray]; segmentedControl.frame = CGRectMake(0, 0, 200, 30); segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar; segmentedControl.selectedSegmentIndex = 1; UIBarButtonItem *segmentedControlButtonItem = [[UIBarButtonItem alloc] initWithCustomView:(UIView *)segmentedControl]; UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; NSArray *barArray = [NSArray arrayWithObjects: flexibleSpace, segmentedControlButtonItem, flexibleSpace, nil]; [self setToolbarItems:barArray]; 
+19
source

In Swift 3

  let toolbarControl = UIToolbar(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: 44)) toolbarControl.delegate = self let segmentControl = UISegmentedControl(items: ["First", "Second"]) segmentControl.selectedSegmentIndex = 0 let barItem = UIBarButtonItem(customView: segmentControl) let barSpace = UIBarButtonItem(barButtonSystemItem: .FlexibleSpace, target: nil, action: nil) let barObjects: Array<UIBarButtonItem> = [barSpace,barItem,barSpace,nil] self.toolbarControl.items = barObjects self.view.addSubview(toolbarControl) 
+1
source
  NSArray *segItemsArray = [NSArray arrayWithObjects: @"Start", @"Stop", nil]; UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:segItemsArray]; segmentedControl.frame = CGRectMake(50, 50, 200, 30); segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar; segmentedControl.selectedSegmentIndex = 1; UIBarButtonItem *segmentedControlButtonItem = [[UIBarButtonItem alloc] initWithCustomView:(UIView *)segmentedControl]; UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; NSArray *barArray = [NSArray arrayWithObjects: flexibleSpace, segmentedControlButtonItem, flexibleSpace, nil]; [self setToolbarItems:barArray]; 
0
source

Source: https://habr.com/ru/post/1485289/


All Articles