Ir para conteúdo
  • Cadastre-se
Entre para seguir isso  
Raphael Rivas

Como executar (IBAction) por codigo

Posts Recomendados

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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!

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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á

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Visitante
Responder este tópico…

×   Você colou conteúdo com formatação.   Remover formatação

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Limpar editor

×   You cannot paste images directly. Upload or insert images from URL.

Entre para seguir isso  

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.



  • Conteúdo Similar

    • Por Fernando Ventura Jr.
      Tenho um IPAD 2 que foi sendo atualizado até a versão IOS 9.3.5(acho que até que foi até longe). Estou estudando o desenvolvimento de Apps com o XCode 9.2, que é a última versão que o meu velho Mac Book Pro, rodando Mac OS Sierra, aceita. Acontece que ao tentar emular o app no Ipad, o compilador reclamou pedindo que atualizasse o meu Ipad para IOS 10, o que não consigo mais. Aconselhou a alterar o target IOS para uma versão anterior. Eu fiz isso, mas aí reclamou da versão do sdk.
      Devo baixar o Xcode 7.3 para desenvolver para IPADs antigos como o meu ou tentar resolver o probela da versão da sdk e continuar com o XCode 9.2? O que acham?
       
    • Por Diego Froes
      Pessoal, boa tarde.
      Estou começando a desenvolver para IOS utilizando as ferramentas XCode, Visual Studio e  Unity. Contudo, como sou iniciante na área IOS gostaria de começar a usar um MacBook Pro usado.
      Mac's que estou sondando:
      Modelo: MacBook Pro; Processador: Intel i5 ou i7; Disco: SSD de 240 ou superior Memória: 8GB ou superior Fabricação: 2011 ou superior Diante do cenário de desenvolvimento de Software, qual seria uma configuração recomendável com faixa de preço entre 2k a 2.5k?
      Obs.: Moro em Belo Horizonte. 
    • Por danielfotografo
      Olá amigos!
      Assinei o Gsuite da Google e preciso colocar um comando no terminal para alterar o diretório de cache, pois por padrão ele usa o disco do sistema, e o meu é um SSD quase cheio!
      No suporte passam esses comandos:
      Local padrão: ~/Library/Application Support/Google/DriveFS
      comando: "defaults write com.google.drivefs.settings ContentCachePath"
      Encontrei em um forum esse comando:
      defaults write com.google.drivefs.settings ContentCachePath -string '/Location/You/Want/'
      Mas não sei o que colocar para que o cache seja movido para meu HD externo com nome de "MAC Externo"! Não entendi esse "Location/You/Want/'" e não sei o que mudar!
      Resumindo: preciso do comando completo pois não entendo nada do TERMINAL!!
    • Por jose carlos.3200
      Adquiri o OS X Lion 10.7 no app store para instalar no iMac 10.6.8. A apple enviou um e-mail para instalação com o contrato de licença, mas não consta o código de conteúdo necessário para abrir e instalar o soft. Como fazer?
       
    • Por Ofclobao
      Pessoal preciso da ajuda de vcs. tenho um macbook final de 2007 e como vcs sabem nao tem mais atualizacao pra ele... mas quero saber se vcs sabem de algum tutorial que eu posso usar para instalar algum soft mais recente nele por fora sem ser pela apple... yosemite por exemplo. nao quero trocar ele,,, uso ele bastante.  ele nao trava ta normal so que quero atualizar ele pq tem mts app que nao roda mas nele com esse soft que ta nele o xlion 7.5.. quem puder ajudar ai agradeco
    • Por Vanessa Fernandes
      Olá, tenho um macbook white 2007 que está na versão lion 10.7,  e procuro alguém que possa me ajudar a atualizar para 10.10 yosemite. Já fiz de tudo e não consigo.
    • Por paulohbmach
      Ganhei um mbp early 2011. Fiz a instalação do lion 10.7 e ao tentar atualizar não consigo. App Store não deixa baixar o Sierra pois precisa ter 10.8.5
      Como proceder neste caso? Quero ao menos sair do lion. Sou leigo em macos, ajuda luciano!
       
    • Por Hugo Leonardo Santos
      Olá pessoal
       
      Comprei um MacBook white 2007 de um amigo que estava vendendo bem barato, porem tive que trocar o HD que estava nele pois o antigo já não funcionava, porem agora não consigo reinstalar o sistema.
      Vamos a alguns motivos.
      1- Não tenho o disco original de instalação.
      2- O teclado do macbook não esta funcionando. (estou usando um externo)
      Como faço para dar boot com um pendrive, utilizando uma imagem baixada da internet?? Alguém pode me ajudar?
       
      OBS: Não possuo outro macbook para criar o disco de instalação.
       
       
    • Por LeoBulitini
      Tenho um Macbook White inicio de 2008, versão 10.7.5 (Lion) 3Gb de memória.
      Estou tentando atualizar ele para o 10.8 (Mountain Lion) pelo MLPostFactor, mas para isso preciso do Install OS X Mountain Lion.app, mas só tenho o .Dmg! Não estou achando esse .app em canto nenhum!  
      Se alguém tiver e puder mandar o link para download ou mandar o próprio app do Mountain Lion.app, fico muito grato!!
    • Por Elber Nantes
      Pessoal, boa noite! Ás vezes participo de alguns beta testers para ver as novidades dos sistemas operacionais e tal, mas no campo de atualizações, da App Store, está aparecendo uma atualização que anda me incomodando (Command Line Tools) for Xcode 9.0 (Print no Anexo) Acontece que não tenho nada do Xcode instalado e nem quero. Alguém sabe se é possível eu sair disso?

  • Estatísticas do Fórum

    • Total de Tópicos
      47.656
    • Total de Posts
      409.032
×
×
  • Criar Novo...