/ / Adicionando uma matriz de UIButtons para navigationItem.rightBarButtonItem resulta em NSInvalidArgumentException - iphone, xcode, cocoa-touch

Adicionando uma matriz de UIButtons para navigationItem.rightBarButtonItem resulta em NSInvalidArgumentException - iphone, xcode, cocoa-touch

Eu estou tentando adicionar uma matriz de 2 botões à direita de uma barra de navegação, mas recebo uma exceção quando executo o código.

"NSInvalidArgumentException", razão: "- [UIButton isSystemItem]: seletor não reconhecido enviado para instância

Meu código é bem simples:

   UILabel * label = [[UILabel alloc] initWithFrame:CGRectMake(0,0,100,45)];
label.backgroundColor=[UIColor clearColor];
label.text = @"Test 2 Buttons";

UIButton *button1 = [UIButton buttonWithType:UIButtonTypeCustom];
button1.frame = CGRectMake(00.0f, 0.0f, 32.0f, 32.0f);

UIButton *button2 = [UIButton buttonWithType:UIButtonTypeCustom];
button2.frame = CGRectMake(00.0f, 0.0f, 32.0f, 32.0f);

NSArray *rightBarButtons = [[NSArray alloc] initWithObjects:button2, button1, nil];


UINavigationItem* navItem = self.navigationItem;
navItem.titleView = label;
navItem.rightBarButtonItems = rightBarButtons;
[rightBarButtons release];
[label release];

Eu estou correndo no simulador do iPhone 5.0. Qualquer ideia?? Desde já, obrigado. Al

Respostas:

28 para resposta № 1

Você não pode adicionar diretamente UIButtons. Você precisa envolvê-los como UIBarButtonItems primeiro - não há aviso de compilador, pois você está passando apenas um array.

Crie os itens do botão da barra usando initWithCustomView:, passando seu botão como a exibição personalizada. Ou, dependendo do que está nos seus botões, crie itens de botão de barra diretamente.


10 para resposta № 2

O truque aqui é usar objetos UIBarButtonItem em vez de objetos UIButton. UIBarButtonItems podem ser criados a partir de UIButtons da seguinte forma:

UIBarButtonItem *myItem = [[UIBarButtonItem alloc] initWithCustomView:uibuttonObject];

No entanto, o uso de UIButtons em uma barra de navegação geralmente é uma má idéia, quando os UIBarButtonItems são feitos para ficarem bonitos. Considere visitar o Referência de classe UIBarButtonItem.


1 para resposta № 3

Você está destinado a dar-lhe uma série de UIBarButtonItem objetos não objetos UIButton. Observe que o UIBarButtonItem não herda nem do UIButton nem do UIView.