Ir para conteúdo
Visualizar no app

Uma forma melhor de navegar. Saiba mais.

MM Fórum

Um app em tela cheia na sua Tela de Início com notificações push, avisos e mais.

Para instalar este app no iOS/iPadOS
  1. Toque no ícone de Compartilhamento no Safari
  2. Role o menu e toque em Adicionar à Tela de Início.
  3. Toque em Adicionar no canto superior direito.
Para instalar este app no Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Como executar (IBAction) por codigo

Featured Replies

Postado

Eu tenho uma duvida, nao sei como executar uma acao por CODIGO.

eu presciso que alguem saiba executar uma -(IBAction),POR CODIGO!

Ou REPETIR a acao. A funcao de repetir a acao.

  • Respostas 8
  • Visualizações 2.1k
  • Criado
  • Última resposta

Top Postadores Neste Tópico

Posts Mais Populares

Postado

exemplo de IB Action ...

- (IBAction)TurnOnOff:(id)sender {}

exemplo de chamada ...

[self TurnOnOff:self];

Postado
  • Autor

Eu não entendi NADA!!

Como esse codigo poderia ter surgido efeito?

Nem deu para VALIDAR o codigo, ou seja dizia que estava imcompativel...

Acho que voce nao me entendeu muito bem.

Como EU posso EXECUTAR uma IBAction, dentro de OUTRA IBAction.

É QUE NEM rodar um programa dentro de um programa.

EU presciso executar atraves de um codigo!

Acho que deu para sacar, né?

Se não nao dá.

Agradeço qualquer ajuda.

Editado por Raphael Rivas

Postado
  • Autor

Esquece o que eu disse anteriormente. O que eu digito no (id)?

Editado por Raphael Rivas

Postado

Cara, primeiro de tudo, use menos caixa alta, pois parece que você está gritando, e isso é rude... apenas normas de etiqueta da internet...

anyway, se você quer chamar uma função dentro de um IBAction, faça:


- (void) FazerAlgo {
NSLog("Fazendo algo...");
}
- (IBAction)BotaoApertado:(id)sender {
// Um pouco de codigo
// Mais um pouco de codigo
if (x == y) {
[self FazerAlgo];
}
}
[/CODE]

Se você nem ao menos sabe o que o (id) signfica, acho que seria aconselhável que você estudasse um pouco mais de Objective-C, Cocoa Touch e Orientação a Objeto. Não espere que escrevam o código para você ;)

Editado por Gabriel Vincent

  • 3 semanas depois...
Postado

O id é o tipo do parâmetro a ser passado para a função (método). O uso dele é desencorajado pela Apple (mesmo o próprio xCode tendo vários métodos que o utilizam), pois ele funciona como se fosse um curinga, ou seja, pode ser o que quiser! É como se fosse uma tipagem dinâmica. O id pode assumir valores numéricos, strings, flutuante, ou qualquer tipo de objeto que possa ser utilizado.

Dê uma lida na documentação do XCode. Lá tem muita coisa para se aprender!

  • 4 semanas depois...
Postado

Programar para iOS é uma questão de saber onde colocar as coisas. Por isto existe o paradigma do MVC.

Vamos aos princípios. IBAction é apenas uma sinalização para o Interface Builder, por isso IB, de que alí é um Target-action. Isso facilita na hora de fazer as conexões visualmente no construtor de interfaces.

IBAction é um typedef para void. Não retorna nada.

No modelo MVC as únicas duas formas que seu view tem de comunicar de volta com o controller é via DELEGATE ou via TARGET-ACTION. Só. Qualquer apontamento direto para o controller é violar o MVC. Não queria jamais fazer isso, senão vc vai falhar rápido.

Se você quer executar este método diretamente e ele é um IBAction, certifique-se primeiramente ele é um VIEW, como um botão(UIButton), slider (UISlider), etc.

Chamar um IBAction por algo que não seja um VIEW é um erro de semântica e é errado.

Se você tiver um VIEW e deseja chamar a função, use o método correto, que é o mesmo que o IB cria pra você quando você cria as conexões visualmente:

- (void)addTarget:(id)target forAction:(SEL)selector forControlEvents:(UIControlEvents)controlEvents;

Target: seu controller, ou quem é responsável por executar o selector, geralmente self.

Selector: o método IBAction, chamado por @selector(metodo)

controlEvents: o tipo de evento que será disparado, existem vários. Use o que melhor encaixa em sua necessidade.

Sobre o "id", ele é simplesmente um ponteiro para um objeto. Seu uso NÃO é desencorajado pela Apple e tem uma utilidade incrível. Ele quer dizer "vou receber qualquer objeto como parâmetro".

O que a documentação diz é que você deve saber o que está fazendo ao usar id, pois se você enviar uma mensagem para um objeto que não responde a determinado metodo, seu app trava. A melhor alternativa é usar introspecção, que é perguntar se o objeto pertence a determinada classe: [obj isKindOfClass:].

No seu caso, se deseja chamar o metodo por umboleto que não seja um View,não use um IBAction, use um metodo normal:

- (void)metodo:parametro1:parametro2

... E dentro do seu IBAction você chama o mesmo método:

- (IBAction) metodo:(id)sender{

[self metodo];

}

É tudo uma questão de design da sua classe.

Mas tenha em mente o seguinte: não viole o MVC, use IBActions só para Views e se for usar id use introspecção para verificar se o que você enviou responde ao método.

Espero ter ajudado!

Abraço.

Postado

tenho uma duvida, talvez bem imbecil, mas é uma duvida:

preciso que ao acionar o botão para fazer um calculo o método verifique se todos os campos estão preenchidos com valores maior que zero, caso contrario ele muda o Label para: Preencha os campos, se estiver tudo certo ele procede com o calculo.

o calculo eu consegui fazer, mas ele verificar e retornar a msg quando tiver zero como valor eu não consigo, alguém ajuda?

agradeço desde já

Postado

tenho uma duvida, talvez bem imbecil, mas é uma duvida:

preciso que ao acionar o botão para fazer um calculo o método verifique se todos os campos estão preenchidos com valores maior que zero, caso contrario ele muda o Label para: Preencha os campos, se estiver tudo certo ele procede com o calculo.

o calculo eu consegui fazer, mas ele verificar e retornar a msg quando tiver zero como valor eu não consigo, alguém ajuda?

agradeço desde já

Simples, amigo:


if ([textField.text isEqualToString:@"0"]) {
label.text = @"Digite um valor maior que zero!";
}
[/CODE]

Ou então:

[CODE]
if (textField.text.intValue == 0) {
label.text = @"Digite um valor maior que zero!";
}
[/CODE]

Esse segundo [b][color=#0000ff]if[/color][/b] será verdadeiro também se o usuário não entrar com valor nenhum no TextField.

Espero ter ajudado

Editado por Gabriel Vincent

Participe do debate

Você pode postar agora e se registrar depois. Se você tem uma conta, entre agora para postar com ela.

Visitante
Responder este tópico…

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Conta

Navegação

Buscar

Buscar

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.