【问题标题】:How to add segmented control to uitoolbar如何将分段控件添加到 uitoolbar
【发布时间】:2013-06-05 08:00:23
【问题描述】:

我有一个带有 UIBarButtonItems 的 UIToolbar。我想给它添加分段控件。

//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];

有没有办法给 UIToolbar 上现有的 uibarbuttonitems 添加分段控件。

【问题讨论】:

    标签: iphone objective-c ios6 uitoolbar uisegmentedcontrol


    【解决方案1】:

    使用此代码:

    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];
    

    【讨论】:

      【解决方案2】:

      在 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)
      

      【讨论】:

        【解决方案3】:
            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];
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-10-21
          • 2010-09-24
          • 1970-01-01
          • 2014-10-22
          相关资源
          最近更新 更多