1

我正在 Xcode 中制作一个应用程序,我的目标是按下按钮时将运行一个方法。问题是当我第一次按下按钮时,我想更改一个变量/NSString,所以下次按下它时它会做其他事情。顺便说一句,我有 375 种不同的方法可以使用,具体取决于变量名。

如果你能帮助我,我将不胜感激。

我还没有添加所有的方法

我的代码是

//
//  Game.m
//  Trivia in a Jar
//
//  Created by Jayden Kelly on 12/11/2013.
//  Copyright (c) 2013 Jaydz Media. All rights reserved.
//
#import "Game.h"
#import "Categories.h"
@interface Game ()
@end
@implementation Game
-(IBAction)AnswerLabel1:(id)sender{
    Selected = [NSString stringWithFormat:@"%@", Answer1.currentTitle];
    if ([Selected isEqualToString:CorrectAnswer]) {
        NSString *name = @"Question8Science"; SEL selector = NSSelectorFromString(name); [self performSelector:selector];
    }
    else {
        [self Question5Science];
    }
}
-(IBAction)AnswerLabel2:(id)sender{
    Selected = [NSString stringWithFormat:@"%@", Answer2.currentTitle];
    if ([Selected isEqualToString:CorrectAnswer]) {
        [self Question5Science];
    }else {
        [self Question5Science];    }
}
-(IBAction)AnswerLabel3:(id)sender{
    Selected = [NSString stringWithFormat:@"%@", Answer3.currentTitle];
    if ([Selected isEqualToString:CorrectAnswer]) {
        [self Question5Science];
    }else {
        [self Question5Science];
    }
}
-(void)Prepare{
    QuestionLabel.text = [NSString stringWithFormat:@"%@", Question];
    [Answer1 setTitle:[NSString stringWithFormat:@"%@",OAnswer1] forState:UIControlStateNormal];
    [Answer2 setTitle:[NSString stringWithFormat:@"%@",OAnswer2] forState:UIControlStateNormal];
    [Answer3 setTitle:[NSString stringWithFormat:@"%@",OAnswer3] forState:UIControlStateNormal];
}
-(void)Question{

}
-(void)Question1Science{
    Question = [NSString stringWithFormat:@"What is the term used to explain the process of plant turning carbon dioxide to Oxygen?"];
    OAnswer1 = [NSString stringWithFormat:@"Transpiration"];
    OAnswer2 = [NSString stringWithFormat:@"Precipitation"];
    OAnswer3 = [NSString stringWithFormat:@"Plants don’t turn carbon dioxide into Oxygen."];
    CorrectAnswer = [NSString stringWithFormat:@"%@", OAnswer1];
    [self Prepare];
}
-(void)Question2Science{
    Question = [NSString stringWithFormat:@"The Metal Bronze is made by mixing Copper and What?"];
    OAnswer1 = [NSString stringWithFormat:@"Copper and Aluminium"];
    OAnswer2 = [NSString stringWithFormat:@"Copper and Iron"];
    OAnswer3 = [NSString stringWithFormat:@"Copper and Tin"];
    CorrectAnswer = [NSString stringWithFormat:@"Copper and Tin"];
        [self Prepare];
}
-(void)Question3Science{
    Question = [NSString stringWithFormat:@"What is the symbol for Water?"];
    OAnswer1 = [NSString stringWithFormat:@"H2o"];
    OAnswer2 = [NSString stringWithFormat:@"Co2"];
    OAnswer3 = [NSString stringWithFormat:@"Wa"];
    CorrectAnswer = [NSString stringWithFormat:@"H20"];
    [self Prepare];
}
-(void)Question4Science{
    Question = [NSString stringWithFormat:@"How many colours are in a rainbow?"];
    OAnswer1 = [NSString stringWithFormat:@"6"];
    OAnswer2 = [NSString stringWithFormat:@"7"];
    OAnswer3 = [NSString stringWithFormat:@"8"];
    CorrectAnswer = [NSString stringWithFormat:@"7"];
    [self Prepare];
}
-(void)Question5Science{
    Question = [NSString stringWithFormat:@"What is the Largest Internal Organ in the Human Body?"];
    OAnswer1 = [NSString stringWithFormat:@"Liver"];
    OAnswer2 = [NSString stringWithFormat:@"Heart"];
    OAnswer3 = [NSString stringWithFormat:@"Lungs"];
    CorrectAnswer = [NSString stringWithFormat:@"Liver"];
    [self Prepare];
}
-(void)Question6Science{
    Question = [NSString stringWithFormat:@"Popcorn Pops Because:"];
    OAnswer1 = [NSString stringWithFormat:@"The water on the outside turns into steam and blows it up like a balloon"];
    OAnswer2 = [NSString stringWithFormat:@"The there is a hole on the inside and when it gets hot it blown up and explodes"];
    OAnswer3 = [NSString stringWithFormat:@"The Microwave sprays a magic ingredient and makes the popcorn grow magically"];
    CorrectAnswer = [NSString stringWithFormat:@"The water on the outside turns into steam and blows it up like a balloon"];
    [self Prepare];
}
-(void)Question7Science{
    Question = [NSString stringWithFormat:@"How many Bones are in The Human Skeleton?"];
    OAnswer1 = [NSString stringWithFormat:@"206"];
    OAnswer2 = [NSString stringWithFormat:@"207"];
    OAnswer3 = [NSString stringWithFormat:@"308"];
    CorrectAnswer = [NSString stringWithFormat:@"206"];
    [self Prepare];
}
-(void)Question8Science{
    Question = [NSString stringWithFormat:@"The Cranium is also know as What Part of the Body?"];
    OAnswer1 = [NSString stringWithFormat:@"Head"];
    OAnswer2 = [NSString stringWithFormat:@"Leg"];
    OAnswer3 = [NSString stringWithFormat:@"Finger"];
    CorrectAnswer = [NSString stringWithFormat:@"Head"];
}
-(void)Question9Science{
    Question = [NSString stringWithFormat:@"What part of the human body is the pupil located on?"];
    OAnswer1 = [NSString stringWithFormat:@"Chest"];
    OAnswer2 = [NSString stringWithFormat:@"Eye"];
    OAnswer1 = [NSString stringWithFormat:@"Finger"];
    CorrectAnswer = [NSString stringWithFormat:@"Eye"];
}
-(void)Question10Science{
    Question = [NSString stringWithFormat:@"How many calories does water contain?"];
    OAnswer1 = [NSString stringWithFormat:@"897 calories"];
    OAnswer2 = [NSString stringWithFormat:@"0 calories"];
    OAnswer3 = [NSString stringWithFormat:@"42 calories"];
    CorrectAnswer = [NSString stringWithFormat:@"0 calories"];
}
-(void)Question11Science{
    Question = [NSString stringWithFormat:@"What is the melting point for Iron?"];
    OAnswer1 = [NSString stringWithFormat:@"1536°C"];
    OAnswer2 = [NSString stringWithFormat:@"1537°C"];
    OAnswer3 = [NSString stringWithFormat:@"1538°C"];
    CorrectAnswer = [NSString stringWithFormat:@"1536°C"];
}
-(void)Question12Science{
    Question = [NSString stringWithFormat:@"What is the melting point for Metal?"];
    OAnswer1 = [NSString stringWithFormat:@"660°C"];
    OAnswer2 = [NSString stringWithFormat:@"720°C"];
    OAnswer3 = [NSString stringWithFormat:@"870°C"];
    CorrectAnswer = [NSString stringWithFormat:@"660°C"];
}
-(void)Question13Science{
    Question = [NSString stringWithFormat:@"Approximately how many bird species do we have in the world?"];
    OAnswer1 = [NSString stringWithFormat:@"50"];
    OAnswer2 = [NSString stringWithFormat:@"10,000"];
    OAnswer3 = [NSString stringWithFormat:@"15,000"];
    CorrectAnswer = [NSString stringWithFormat:@"10,000"];
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}
- (void)viewDidLoad
{
    Next = [NSString stringWithFormat:@"7Science"];
    CategoryLabel.text = [NSString stringWithFormat:@"%@", SelectedCategory];
    [self Question13Science];
    // Do any additional setup after loading the view.
}
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
@end
4

2 回答 2

1

如果我对您的理解正确,您只是希望对按下按钮时发生的事件进行条件化。如果是这样,你可以尝试这样的事情:

- (IBAction)linkMeToYourButton:(UIButton *)sender
{
    if (someCondition) {
        [self doSomething];
    }else{
        [self doSomethingElse];
    }
}
于 2013-11-13T20:28:25.227 回答
0

首先,声明一个变量来跟踪按钮是否已经被点击。

@implementation MyViewController {
    BOOL _buttonAlreadyClicked; // the default value is NO
}

在点击处理程序中,检查该值,然后调用这两种方法之一。

- (IBAction)buttonClickHandler:(UIButton *)sender
{
    if(!_buttonAlreadyClicked) {
        [self doFirstAction];
        _buttonAlreadyClicked = YES;
    }
    else {
        [self doSecondAction];
    }
}

如果您有许多可能的操作,您可以定义一些选择器:

SEL action1 = @selector(action1);
SEL action2 = @selector(action2);

然后在您的点击处理程序中,根据您的需要调用适当的选择器:

 if(something) {
      [self performSelector:action1];
 } 
 else if(anotherCondition) {
      [self performSelector:action2];
 }
 // etc.

您的选择器名称必须与您定义的实际方法相匹配,

于 2013-11-13T20:30:32.060 回答