iPhone UIBarButtonItem setCustomView: метод? - PullRequest
1 голос
/ 27 февраля 2010

Я хочу настроить внешний вид моего UIBarButtonItem. Вот код, который я сейчас использую:

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(267, 6, 48, 30)];
[editButton setCustomView:button];  // editButton is the UIBarButtonItem

К сожалению, кнопка UIB не рисуется, т.е. она прозрачна на 100%. Я знаю, что кнопка есть, потому что, когда я добавляю строку в код, вот так:

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(267, 6, 48, 30)];
[editButton setCustomView:button];  // editButton is the UIBarButtonItem
UIRectFill(button.frame);

Я вижу черный квадрат в месте, где должна появиться кнопка.

Как я могу получить UIButton? Я уже посмотрел на кучу мест, но, кажется, ничего не работает ...

Ответы [ 4 ]

0 голосов
/ 30 марта 2012

У меня была похожая проблема; кнопка не появилась, и нажатие в этом месте тоже ничего не сделало. Установка границ кнопки, казалось, была магией, которая заставляет ее работать.

Вот код, который я использую для установки правой кнопки:

UIButton* addButton = [UIButton buttonWithType:UIButtonTypeCustom];
[addButton addTarget:self action:@selector(onAdd) forControlEvents:UIControlEventTouchUpInside];
[addButton setImage:[UIImage imageNamed:@"button_plus.png"] forState:UIControlStateNormal];
addButton.bounds = CGRectMake(0, 0, 30, 30);
UIBarButtonItem* addItem = [[UIBarButtonItem alloc] initWithCustomView:addButton];
navitem.rightBarButtonItem = addItem;
0 голосов
/ 27 февраля 2010

Вы пытались запустить его с пользовательским представлением, которое является UIImageView? Если это работает, вы можете создать UIImageView таким образом, что он подделывает классическую UIButton, как описано здесь:

Как создать большой красный UIButton с помощью iPhone SDK?

Но в целом, с точки зрения пользовательского интерфейса, странно иметь классический UIButton вместо UIBarButtonItem: /

0 голосов
/ 01 марта 2012

Обратитесь к моему ответу на этот вопрос .

Я думаю, что лучше не помещать UIButton внутрь UIBarButtonItem. Они делают то же самое более или менее, и BBI существуют по причине - они легкие по сравнению с UIButton, и у них хорошие приятные отношения с UINavigationItems.

Я думаю, что мы можем помочь немного лучше, если вы дадите нам знать - какова общая цель, которую вы пытаетесь достичь? Таким образом, мы можем помочь обеспечить жизнеспособное решение.

0 голосов
/ 27 февраля 2010

Я не думаю, что вы можете установить пользовательский вид кнопки для другой кнопки. Кнопки являются сложными объектами, и их вложение обычно не работает.

Предполагается, что пользовательский атрибут вида предназначен для оформления, а не для функциональности. Вы должны загрузить пользовательский вид с желаемым внешним видом для UIBarButtonItem и позволить ему обрабатывать фактическую логику кнопок.

...