Как разместить UIBarButtonItem на правой стороне UIToolbar? - PullRequest
30 голосов
/ 22 марта 2010

Я разработал вид с панелью инструментов, которая появляется в Interface Builder модально.У меня есть UIBarButtonItem, который находится на левой стороне, который я хотел бы видеть на правой стороне панели инструментов.Как я могу сделать это в IB или через код?

Ответы [ 6 ]

61 голосов
/ 14 декабря 2011

Вот как это сделать в коде, если кто-нибудь сталкивался с этим сообщением:

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];
35 голосов
/ 22 марта 2010

Вставьте элемент с идентификатором «гибкий пробел».


(источник: xanga.com )

30 голосов
/ 31 октября 2015

- один элемент справа, как этот

enter image description here

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

-два левых и правых, как это

enter image description here

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

- три таких элемента

enter image description here

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

- четыре таких элемента

enter image description here

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

поэтому, если вы хотите добавить пробел, вы должны добавить кнопку гибкой панели.

10 голосов
/ 25 сентября 2015

Код Swift:

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
}
2 голосов
/ 17 сентября 2017

Swift 3.x или выше:

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
    }()

Выход:

enter image description here

0 голосов
/ 22 марта 2010

Если вы можете обойтись без этого, не будучи UIBarButtonItem (например, информационная кнопка), то я изменю слой кнопки, чтобы он всегда был перед панелью инструментов. Таким образом, когда я перетаскиваю кнопку над панелью инструментов в IB, она автоматически не засасывает и переходит на левую сторону.

...