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 № 1Você 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.