How to place UIBarButtonItem on the right side of a UIToolbar?

前端 未结 6 1462
故里飘歌
故里飘歌 2020-12-14 00:39

I have designed a view with a toolbar that appears modally in Interface Builder. I have a UIBarButtonItem that is on the left hand side, which I would like to appear on the

相关标签:
6条回答
  • 2020-12-14 00:58

    - one item in the right like this

    UIBarButtonItem *flexible = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
    
    UIBarButtonItem *item1 = [[UIBarButtonItem alloc] initWithTitle:@"item1” style:UIBarButtonItemStylePlain target:self action:nil];
    
    self.toolbarItems = [NSArray arrayWithObjects: flexible, item1, nil];
    

    -two items left and right like this

    UIBarButtonItem *flexible = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
    
    UIBarButtonItem *item1 = [[UIBarButtonItem alloc] initWithTitle:@"item1” style:UIBarButtonItemStylePlain target:self action:nil];
    UIBarButtonItem *item2 = [[UIBarButtonItem alloc] initWithTitle:@"item2” style:UIBarButtonItemStylePlain target:self action:nil];
    
    self.toolbarItems = [NSArray arrayWithObjects: item1, flexible, item2, nil];
    

    -three items like this

    UIBarButtonItem *flexible = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
    
    UIBarButtonItem *item1 = [[UIBarButtonItem alloc] initWithTitle:@"item1” style:UIBarButtonItemStylePlain target:self action:nil];
    UIBarButtonItem *item2 = [[UIBarButtonItem alloc] initWithTitle:@"item2” style:UIBarButtonItemStylePlain target:self action:nil];
    UIBarButtonItem *item3 = [[UIBarButtonItem alloc] initWithTitle:@"item3” style:UIBarButtonItemStylePlain target:self action:nil];
    
    self.toolbarItems = [NSArray arrayWithObjects: item1, flexible, item2, flexible, item3, nil];
    

    -four items like this

    UIBarButtonItem *flexible = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
    
    UIBarButtonItem *item1 = [[UIBarButtonItem alloc] initWithTitle:@"item1” style:UIBarButtonItemStylePlain target:self action:nil];
    UIBarButtonItem *item2 = [[UIBarButtonItem alloc] initWithTitle:@"item2” style:UIBarButtonItemStylePlain target:self action:nil];
    UIBarButtonItem *item3 = [[UIBarButtonItem alloc] initWithTitle:@"item3” style:UIBarButtonItemStylePlain target:self action:nil];
    UIBarButtonItem *item4 = [[UIBarButtonItem alloc] initWithTitle:@"item4” style:UIBarButtonItemStylePlain target:self action:nil];
    
    self.toolbarItems = [NSArray arrayWithObjects: item1, flexible, item2, item3, flexible, item4, nil];
    

    so when you want to add a space you must add the flexible bar button.

    0 讨论(0)
  • 2020-12-14 00:58

    Swift Code:

    func addDoneButton() -> UIToolbar {
        let toolbar = UIToolbar()
        let flexButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil)
        let doneButton = UIBarButtonItem(title: "Done", style: .Plain, target: self, action: Selector("donePressed"))
        toolbar.setItems([flexButton, doneButton], animated: true)
        toolbar.sizeToFit()
        return toolbar
    }
    
    0 讨论(0)
  • 2020-12-14 01:01

    If you can get away with this not being a UIBarButtonItem (for example, an info button), what I do is change the layer of the button to always be in front of the Toolbar. This way, when I drag the button over the toolbar in IB it doesn't automatically suck it in and over to the left side.

    0 讨论(0)
  • 2020-12-14 01:05

    Swift 3.x or above:

    internal var textFieldHandlerToolBar: UIToolbar = {
            let tb = UIToolbar.init(frame: CGRect.init(origin: .zero, size: CGSize.init(width: UIScreen.screenSize().width, height: 44.0)))
            let flexibleButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil)
            let doneBarButton = UIBarButtonItem.init(title: "Done", style: UIBarButtonItemStyle.done, target: self, action: #selector(actionDonePickerSelection))
            tb.setItems([flexibleButton, doneBarButton], animated: false)
            return tb
        }()
    

    Output:

    0 讨论(0)
  • 2020-12-14 01:10

    Insert an item which has identifier being "flexible space".


    (source: xanga.com)

    0 讨论(0)
  • 2020-12-14 01:11

    Here's how to do it in code if anyone comes across this post:

    UIBarButtonItem *leftButton = [[[UIBarButtonItem alloc] initWithTitle:@"Item" style:UIBarButtonItemStyleBordered target:self action:@selector(btnItem1Pressed:)] autorelease];
    
    UIBarButtonItem *flex = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil] autorelease];
    
    UIBarButtonItem *rightButton = [[[UIBarButtonItem alloc] initWithTitle:@"Item" style:UIBarButtonItemStyleBordered target:self action:@selector(btnItem2Pressed:)] autorelease];
    
    
    self.toolbarItems = [NSArray arrayWithObjects: leftButton, flex, rightButton, nil];
    
    0 讨论(0)
提交回复
热议问题